下载地址:
Releases · microsoftarchive/redis · GitHub
启动服务
切换到redis根目录,打开cmd,执行下面命令,启动redis服务
(redis服务生命周期与cmd窗口共存,关闭即停止)
redis-server.exe redis.windows.conf
或双击这个程序
连接服务
在新建一个cmd,输入如下命令,连接redis服务,进入redis命令行
redis-cli.exe -h 127.0.0.1 -p 6379
或双击这个程序
基础操作 set 、 get、del
String (字符串)
127.0.0.1:6379> set params 1232aa131
OK
127.0.0.1:6379> get params
"1232aa131"
127.0.0.1:6379> set params1 "1232aa131"
OK
127.0.0.1:6379> get params1
"1232aa131"
127.0.0.1:6379> del parmas
(integer) 0
127.0.0.1:6379> del params1
(integer) 1
127.0.0.1:6379> del params
(integer) 1
127.0.0.1:6379>
Hash(哈希)存储 HMSET 、HGET 、HGETALL
127.0.0.1:6379> HMSET string_map name1 hollow name2 world name3 !
OK
127.0.0.1:6379> HGET string_map name1
"hollow"
127.0.0.1:6379> HGET string_map name2
"world"
127.0.0.1:6379> HGET string_map name3
"!"
127.0.0.1:6379> HGETALL string_map
1) "name1"
2) "hollow"
3) "name2"
4) "world"
5) "name3"
6) "!"
127.0.0.1:6379> del string_map
(integer) 1
127.0.0.1:6379>
List(列表)
lpush 从队列头(左)加入 一个或多个元素
lrange 打印出指定范围的元素 (0,-1)打印全部
rpush 从队列尾(右)加入 一个或多个元素
llen 获取队列长度
lindex 根据索引获取元素
lpop 移除队首元素,并返回
rpop 移除队尾元素,并返回
lrem 移除n个指定元素,指定数量为正整数,从队首开始删除;
指定数量为负整数,从队尾开始删除
lset 根据索引设置(修改)元素内容
ltrim 删除指定区间以外的元素,(0,-1)全区间
lpushx 为已存在的列表的队首加入元素
rpushx 为已存在的列表的队尾加入元素
127.0.0.1:6379> lpush string_list java
(integer) 1
127.0.0.1:6379> lpush string_list c++
(integer) 2
127.0.0.1:6379> lpush string_list python
(integer) 3
127.0.0.1:6379> lpush string_list vue
(integer) 4
127.0.0.1:6379> lrange string_list 0 10
1) "vue"
2) "python"
3) "c++"
4) "java"
127.0.0.1:6379> rpush string_list go
(integer) 5
127.0.0.1:6379> lrange string_list 0 10
1) "vue"
2) "python"
3) "c++"
4) "java"
5) "go"
127.0.0.1:6379> llen string_list
(integer) 5
127.0.0.1:6379> lindex string_list 2
"c++"
127.0.0.1:6379> lindex string_list 0
"vue"
127.0.0.1:6379> lpush string_list 1 2 3 4 5
(integer) 10
127.0.0.1:6379> lrange string_list 0 10
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "vue"
7) "python"
8) "c++"
9) "java"
10) "go"
127.0.0.1:6379> rpush string_list 1 2 3 4 5
(integer) 15
127.0.0.1:6379> lrange string_list 0 20
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "vue"
7) "python"
8) "c++"
9) "java"
10) "go"
11) "1"
12) "2"
13) "3"
14) "4"
15) "5"
127.0.0.1:6379> lpop string_list
"5"
127.0.0.1:6379> lrange string_list 0 20
1) "4"
2) "3"
3) "2"
4) "1"
5) "vue"
6) "python"
7) "c++"
8) "java"
9) "go"
10) "1"
11) "2"
12) "3"
13) "4"
14) "5"
127.0.0.1:6379> rpop string_list
"5"
127.0.0.1:6379> lrange string_list 0 20
1) "4"
2) "3"
3) "2"
4) "1"
5) "vue"
6) "python"
7) "c++"
8) "java"
9) "go"
10) "1"
11) "2"
12) "3"
13) "4"
127.0.0.1:6379> lrange string_list 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "vue"
6) "python"
7) "c++"
8) "java"
9) "go"
10) "1"
11) "2"
12) "3"
13) "4"
127.0.0.1:6379> lrem string_list -2 sasda
(integer) 0
127.0.0.1:6379> lrem string_list -2 3
(integer) 2
127.0.0.1:6379> lrange string_list 0 -1
1) "4"
2) "2"
3) "1"
4) "vue"
5) "python"
6) "c++"
7) "java"
8) "go"
9) "1"
10) "2"
11) "4"
127.0.0.1:6379> lset string_list 0 199
OK
127.0.0.1:6379> lrange string_list 0 -1
1) "199"
2) "2"
3) "1"
4) "vue"
5) "python"
6) "c++"
7) "java"
8) "go"
9) "1"
10) "2"
11) "4"
127.0.0.1:6379> ltrim string_list 3 7
OK
127.0.0.1:6379> lrange string_list 0 -1
1) "vue"
2) "python"
3) "c++"
4) "java"
5) "go"
127.0.0.1:6379> ltrim string_list 0 -1
OK
127.0.0.1:6379> lrange string_list 0 -1
1) "vue"
2) "python"
3) "c++"
4) "java"
5) "go"
127.0.0.1:6379> lpushx nsadsa a
(integer) 0
127.0.0.1:6379> lrange nsadsa 0 -1
(empty list or set)
127.0.0.1:6379> lpushx string_list a
(integer) 6
127.0.0.1:6379> lrange string_list 0 -1
1) "a"
2) "vue"
3) "python"
4) "c++"
5) "java"
6) "go"
127.0.0.1:6379> rpushx nsadsa a
(integer) 0
127.0.0.1:6379> lrange nsadsa 0 -1
(empty list or set)
127.0.0.1:6379> rpushx string_list a
(integer) 7
127.0.0.1:6379> lrange string_list 0 -1
1) "a"
2) "vue"
3) "python"
4) "c++"
5) "java"
6) "go"
7) "a"
127.0.0.1:6379>
Set(集合)
sadd 向指定集合添加一个或多个元素
smembers 返回指定集合内所有元素
scard 返回指定集合的元素数量
sdiff 返回第一个集合比第二个集合多出哪些元素
sismember 判断一个元素是否存在于指定集合中,存在返回1,不存在返回0
127.0.0.1:6379> sadd string_set java
(integer) 1
127.0.0.1:6379> sadd string_set c++
(integer) 1
127.0.0.1:6379> sadd string_set python
(integer) 1
127.0.0.1:6379> smembers string_set
1) "python"
2) "c++"
3) "java"
127.0.0.1:6379> scard string_set
(integer) 3
127.0.0.1:6379> sadd set1 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> sdiff string_set set1
1) "c++"
2) "python"
3) "java"
127.0.0.1:6379> sismember set1 sad
(integer) 0
127.0.0.1:6379> sismember set1 1
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379>
zset(sorted set:有序集合)
zadd 添加元素(优先级,值)
zrange 返回从小到大排列
zrevrange 返回从大到小排列
127.0.0.1:6379> zadd set2 2 2 1 1
(integer) 2
127.0.0.1:6379> zrange set2 0 10
1) "1"
2) "2"
127.0.0.1:6379> zrange set2 0 10 withscores
1) "1"
2) "1"
3) "2"
4) "2"
127.0.0.1:6379> zrevrange set2 0 10
1) "2"
2) "1"
127.0.0.1:6379>
普通redis操作jedis,有点类似jdbc
引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
//1 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2 存放内容
jedis.set("password","123456");
String value = jedis.get("username");
System.out.println(value);
jedis.del("username");
jedis.hset("myhash","addr","bj");
String hValue = jedis.hget("myhash", "addr");
System.out.println(hValue);
Set<String> keys = jedis.keys("*");
for (String key : keys) {
System.out.println(key);
}
//3 关闭连接
jedis.close();
springboot集成redis
(1)引入依赖
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)加redis配置
spring:
redis:
database: 0 # 使用的数据库(0-15),默认为0
host: localhost
port: 6379
password:
(3)测试使用
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping(value = "/{key}/{value}",method = RequestMethod.GET)
@ResponseBody
public String set(@PathVariable String key, @PathVariable String value) {
stringRedisTemplate.opsForValue().set(key,value);
return "操作成功!";
}