Redis数据操作命令
一、通用命令
1、select :redis默认有16个库,默认用的是下标0库,通过该命令来切换库
2、dbsize : 查看当前库有多少个key
3、flushdb: 清空当前库的数据
4、flushall: 清空0-15个库的数据
5、keys * : 查看指定规则的key,星号是通配符,表示看所有
6、exists : 判断是否含有指定key
7、type : 判断key的类型
8、del : 删除指定key
9、unlink: 删除指定key,异步操作,会先返回提示删除,也许还没删除完呢,异步的线程正在删除
10、expire: 为key设置过期时间
11、ttl : 查看key剩余过期时间,-1表示永不过期,-2表示过期key,正数表示剩余时间
12、scan: 通过游标控制,分批次查询数据
127.0.0.1:6379> select 0 #切换库
OK
127.0.0.1:6379> dbsize #看了下key的数量
(integer) 8
127.0.0.1:6379> flushdb #清空
OK
127.0.0.1:6379> flushall #其他库也给清空
OK
# 填一些假的数据进去
127.0.0.1:6379> mset xp1 v1 xp2 v2 xp3 v3 xp4 v4 xp5 v5 xp6 v6 xp7 v7 xp8 v8 xp9 v9 xp10 v10 xp11 v11
OK
127.0.0.1:6379> exists xp111 #看下有这个key吗,有的话是1,没有是0
(integer) 0
127.0.0.1:6379> type xp1 #看key的类型
string
127.0.0.1:6379> keys xp1* #查看xp1为前缀的key有哪些
1) "xp10"
2) "xp1"
3) "xp11"
127.0.0.1:6379> del xp2 #删除一个key
(integer) 1
127.0.0.1:6379> expire xp3 5 #设置key指定过期时间
(integer) 1
127.0.0.1:6379> ttl xp3 #查看剩余时间为2秒
(integer) 2
127.0.0.1:6379> ttl xp3 # 表示已经过期了
(integer) -2
127.0.0.1:6379> dbsize # 剩余9个
(integer) 9
二、String类型
1、set key value [ex 秒数] [px 毫秒数] [nx/xx]: 设置键值,如果存在则是修改值
表示存在时间,如果ex和px同时写,则以后面的有效期为准
nx:如果key不存在则建立,已存在则不操作
xx:如果key存在则修改其值,不存在无操作,也不会新建
setnx key value 等价于 set key value nx
setex key time value 等价于 set key value ex time
2、get key:取值
3、mset key1 value1 key2 value2 : 一次设置多个值
msetnx key1 value1 key2 value2 :有任何一个存在,则不操作
4、mget key1 key2 :一次获取多个值
127.0.0.1:6379> set k1 v1 #设置键值
OK
127.0.0.1:6379> set k1 v111 nx #设置键值,因为跟了nx,键已存在则不设置也不修改
(nil)
127.0.0.1:6379> get k1 # 获取值
"v1"
127.0.0.1:6379> set k1 v111 ex 10 #key存在,命令不含ex,修改值为v111并10秒后过期
OK
127.0.0.1:6379> ttl k1 # 剩余8秒过期
(integer) 8
127.0.0.1:6379> get k1 #能取出新设置的值
"v111"
127.0.0.1:6379> get k1 # 过期取不出来值了
(nil)
127.0.0.1:6379> mset key1 v1 key2 v2 #批量设置键值
OK
127.0.0.1:6379> mget key1 key2 #批量取值
1) "v1"
2) "v2"
127.0.0.1:6379> msetnx key1 v111 key2 v222 key3 v333 #批量设置与修改值,但因为有key存在,命令不生效
(integer) 0
127.0.0.1:6379> mget key1 key2 key3 #取值未发生修改,key3也没插入成功
1) "v1"
2) "v2"
3) (nil)
5、incr key:自增,返回新值,如果incr一个不是int的value则返回错误,incr一个不存在的key,则设置key为1
6、decr key : 自减
7、decrby/incrby key 2:指定补偿自增自减,这里指定了2为步长
8、incrbyfloat key 0.7: 自增浮点数
127.0.0.1:6379> incr num #因为没有插入了值1
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> incr num #自增一点
(integer) 2
127.0.0.1:6379> incr num #自增一点
(integer) 3
127.0.0.1:6379> incrby num 2 #自增2点
(integer) 5
127.0.0.1:6379> incrbyfloat num 0.5 #自增0.5点
"5.5"
5、append key value :把value追加到key 的原值上
6、getset key value:获取并返回旧值,在设置新值
7、strlen key:取指定key的value值的长度
8、setex key time value:设置key对应的值value,并设置有效期为time秒
9、setrange key offset value:指定下标开始的字符串替换成新值,字符串下标从0开始
10、getrange key start stop:获取字符串中[start, stop]范围的值
如果start所处位置在stop右边,则返回空字符串
127.0.0.1:6379> set name zhangs #插入值
OK
127.0.0.1:6379> get name
"zhangs"
127.0.0.1:6379> append name an #在值后面追加an字符
(integer) 8
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> getset name lisi #取出原本的值,将新值覆盖进去
"zhangsan"
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> strlen name # 值长度为4
(integer) 4
127.0.0.1:6379> setex test 6 ceshi #插入值时并设置过期时间
OK