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> 

 

posted @ 2021-04-01 11:03  linuxTang  阅读(97)  评论(0)    收藏  举报