Redis学习记录笔记1

一、全局命令
1.查看redis中所有的键
语法:keys *
使用redis的测试客户端连接redis,这里使用单实例来做实验

[root@localhost ~]# redis-cli      #这里省略了 -h 和 -p参数,默认连接到127.0.0.1:6379
127.0.0.1:6379> 
#127.0.0.1:6379> keys *
(empty list or set)            #新部署的redis没有键,提示空列表或集合

向redis中插入3对键值对:

127.0.0.1:6379> set name jingjing
OK
127.0.0.1:6379> set age 24
OK
127.0.0.1:6379> set country china
OK

再次使用keys *命令来查询redis中存在的键:

127.0.0.1:6379> keys *
1) "country"
2) "age"
3) "name"

2.查询键的总数
语法:dbsize
插入一个列表类型的键值对,其值是由多个元素组成:

127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7

然后再使用dbsize查询:

127.0.0.1:6379> dbsize
(integer) 4           #总共有4个键,如下所示的四个
127.0.0.1:6379> keys *
1) "country"
2) "mylist"
3) "age"
4) "name"

Notes:dbsize在计算总的键数时不会遍历所有的键,而是直接获取redis内置的键总数变量,所以其时间复杂度是O(1)。而用keys *命令统计键时会遍历所有的键,所以他的时间复杂度与键的数量有关,即为O(n),n为键的数量,可想而知,当存在大量的键时会占用很多资源,所以在生产环境禁止使用。

3.检查键是否存在
语法:exists key_name
如果键存在则返回1,若不存在则返回0:

127.0.0.1:6379> exists name
(integer) 1                #存在,返回1
127.0.0.1:6379> exists redis 
(integer) 0                #不存在,返回0

4.删除键
语法:del key_name [key_name ...]

del是一个通用的命令,无论键的值是何种数据结构类型,都可将其删除,如把字符串类型的键name和列表类型的键mylist分别删除:

127.0.0.1:6379> del name
(integer) 1              #删除成功,返回删除的键的个数
127.0.0.1:6379> del mylist
(integer) 1              #删除成功,返回删除的键的个数
127.0.0.1:6379> exists name
(integer) 0              #再次查询,返回0,表示不存在
127.0.0.1:6379> exists mylist
(integer) 0

如果试图删除一个不存在的键,会返回0:

127.0.0.1:6379> del name
(integer) 0             #因为刚才已经把键name删除了,所以返回0

而且del命令还支持批量删除:

127.0.0.1:6379> del country age
(integer) 2            #成功删除2个键

5.为键设置过期时间
语法:expire key_name seconds
redis支持对键设置过期时间,就像保质期一样,当超过了过期时间,则会自动将键删除,创建一个键name并为其设置过期时间为5秒:

127.0.0.1:6379> set name jingjing
OK
127.0.0.1:6379> expire name 5
(integer) 1               #设置过期时间为5秒
127.0.0.1:6379> get name
(nil)                     #因为过期后被删除,所以查询时返回nil

那有了键过期时间,就像我们吃东西前总要看一下还有多久过期,该如何查询键还有多久过期,答案是使用ttl(time to live)命令就会返回键的剩余过期时间,它有3种返回值:

  • 大于等于0的整数:键剩余过期时间
  • -1:键没有设置过期时间
  • -2:键不存在

语法:ttl key_name

127.0.0.1:6379> ttl name
(integer) -2           #键不存在
127.0.0.1:6379> set name jingjing
OK                     #设置键name
127.0.0.1:6379> expire name 20
(integer) 1            #设置键name的过期时间为20秒
127.0.0.1:6379> ttl name
(integer) 12           #键过期时间还有12秒

6.查询键的数据结构类型
语法:type key_name
例如键name的类型为字符串,则返回string。键mylist是列表类型,则返回list:

127.0.0.1:6379> type name
string
127.0.0.1:6379> type mylist
list
127.0.0.1:6379> type age
none                    #如果键不存在,则返回none
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章