2redis字符串操作和列表操作
一字符串
set:设置指定key的值,例如set zhangsan 28
get:获取指定key的值,例如get zhangsan
mset:设置多个key-value值,例如mset k1 v1 k2 v2 k3 v3
mget:获取所有给定的key值
incr key:将key存储的数字增加1,例如incr num1
decr key:将key中存储的数字减1,例如decr num1
incrby key num:将key中存储的数字加10,例如incrby num1 10
decrby key num:将key中存储的数字减10,例如decrby num1 10
exixts key:查询某个k值的状态,0表示不存在,1表示存在,例如exists k1
del key:删除某个key,例如del k1
ttl key:查看某个key值的状态是否过期,例如ttl k1
expire kye 10:给某个key增加10秒的过期时间,例如expire zhangsan 10
persist key:将某个key设为永不过期,例如persist zhangsan
二列表:
redis字符串列表默认按照插入的顺序排序
rpush key value1[value2]:在列表中添加一个或多个值,例如lpush list1 B
lpush key value1[value2]:在列表头部插入一个或多个值,例如lpush list1 A
lrange key start stop:获取列表指定范围内的元素,例如lrange list1 0 -1
rpop key:移除列表最后一个元素,例如rpop list1
lpop key:移除列表第一个元素,例如lpop list1
1等不登录redis都可以执行存取操作,当取出的值是乱码事,可以使用>进行导出(解码):
[root@db01 ~]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf [root@db01 ~]# redis-cli 127.0.0.1:6379> keys * #此条命令慎用,容易造成服务器卡死,如果要查询有多少个key,请使用命令DBSIZE (empty list or set) 127.0.0.1:6379> set zhangsan 25 OK 127.0.0.1:6379> get zhangsan "25" 127.0.0.1:6379> [root@db01 ~]# redis-cli set lisi 28 OK [root@db01 ~]# redis-cli get lisi "28" [root@db01 ~]# vim test.txt [root@db01 ~]# cat test.txt 人之初性本善性相近习相远! [root@db01 ~]# redis-cli set 三字经 $(cat test.txt) OK [root@db01 ~]# redis-cli get 三字经 >sanzijing.txt [root@db01 ~]# cat sanzijing.txt 人之初性本善性相近习相远! [root@db01 ~]# redis-cli
127.0.0.1:6379> DBSIZE #查看有多少个key
(integer) 3
2INCR命令可以将字符床解析成整形进行加1操作,DECR与INCR相反,最后结果变为新的字符串,如果要加更大的数需要用到incrby命令:
[root@db01 ~]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf [root@db01 ~]# redis-cli 127.0.0.1:6379> DBSIZE (integer) 3 127.0.0.1:6379> type zhangsan string 127.0.0.1:6379> set num1 100 OK 127.0.0.1:6379> type num1 string 127.0.0.1:6379> incr num1 (integer) 101 127.0.0.1:6379> incrby num1 10 (integer) 111 127.0.0.1:6379> get num1 "111" 127.0.0.1:6379> decr num1
(integer) 110
127.0.0.1:6379>
3默认的set插入是覆盖而不是追加:
[root@db01 ~]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf
[root@db01 ~]# redis-cli
127.0.0.1:6379> get zhangsan
"25"
127.0.0.1:6379> set zhangsan 33
OK
127.0.0.1:6379> get zhangsan
"33"
4get,set只能单个查询和插入一个key值,如果需要多个查询和插入需要哦用到mget和mset:
127.0.0.1:6379> mset k2 v2 k3 v3 k4 v4
OK
127.0.0.1:6379> mget k2 k3 k4
1) "v2"
2) "v3"
3) "v4"
127.0.0.1:6379>
5生产中禁用kyes *,那么如何查询某个key是否存在?
127.0.0.1:6379> exists k1
(integer) 0
127.0.0.1:6379> exists k2
(integer) 1
127.0.0.1:6379> del k2 #删除k2
(integer) 1
127.0.0.1:6379> exists k2
(integer) 0
127.0.0.1:6379>
6可以对key设置一个超时时间,到达时间后删除key:
127.0.0.1:6379> ttl k3 #查看过期时间,-1表示永不过期
(integer) -1
127.0.0.1:6379> expire k3 10 #给k3添加一个10秒的过期时间
(integer) 1
127.0.0.1:6379> ttl k3
(integer) 8
127.0.0.1:6379> ttl k3
(integer) 5
127.0.0.1:6379> ttl k3
(integer) 3
127.0.0.1:6379> ttl k3
(integer) 1
127.0.0.1:6379> ttl k3 #-2表示已经过期
(integer) -2
127.0.0.1:6379> ttl k3
(integer) -2
127.0.0.1:6379> get k3 #已经获取不到k3了,说明已经被删除了
(nil)
127.0.0.1:6379>
7故障案例:
加入有个活动100秒后到期,此时另外一个人执行了key的覆盖操作,那么之前设置的过期时间就失效了,为了避免这种情况的出现,我们可能需要编写一个监控脚本,只要是某个key的值是-1,就立马发出警报通知
127.0.0.1:6379> EXPIRE k4 100 #设置过期时间 (integer) 1 127.0.0.1:6379> ttl k4 (integer) 94 127.0.0.1:6379> ttl k4 (integer) 90 127.0.0.1:6379> set k4 v4 #不小心执行了覆盖操作 OK 127.0.0.1:6379> ttl k4 #结果是key值永不过期 (integer) -1 127.0.0.1:6379>
[root@db01 ~]# redis-cli ttl k4
(integer) -1
[root@db01 ~]#
8如果要将某个key的过期时间设为永不过期,可以使用persist:
127.0.0.1:6379> expire zhangsan 100
(integer) 1
127.0.0.1:6379> ttl zhangsan
(integer) 64
127.0.0.1:6379> ttl zhangsan
(integer) 55
127.0.0.1:6379> persist zhangsan
(integer) 1
127.0.0.1:6379> ttl zhangsan
(integer) -1
127.0.0.1:6379>
9列表操作:
127.0.0.1:6379> rpush list1 A # #在列表中添加一个或多个值
(integer) 1
127.0.0.1:6379> rpush list1 B
(integer) 2
127.0.0.1:6379> rpush list1 C
(integer) 3
127.0.0.1:6379> lpush list1 top #在列表头部插入一个或多个值
(integer) 4
127.0.0.1:6379> lpush list1 top2
(integer) 5
127.0.0.1:6379> lrange list1 0 -1 #获取列表指定范围内的元素
1) "top2"
2) "top"
3) "A"
4) "B"
5) "C"
127.0.0.1:6379> rpop list1 #移除列表最后一个元素
"C"
127.0.0.1:6379> lrange list1 0 -1
1) "top2"
2) "top"
3) "A"
4) "B"
127.0.0.1:6379> lpop list1 #移除列表第一个元素
"top2"
127.0.0.1:6379> lrange list1 0 -1
1) "top"
2) "A"
3) "B"
127.0.0.1:6379> lrange list1 1 -2
1) "A"
127.0.0.1:6379> lrange list1 1 2
1) "A"
2) "B"
127.0.0.1:6379>

浙公网安备 33010602011771号