redis中key的操作
通用操作
查询key
操作符 | 说明 |
---|---|
keys * | 查询所有key |
keys s* | 模糊查询s这个key是否存在 |
keys demo | 精确查询demo这个key是否存在 |
randomkey | 随机返回某一个key |
type demo | 查询demo这个key的类型 |
exists demo | 查询demo这个key是否存在,存在即返回 1 ,不存在返回 0. |
获取key
操作符 | 描述 |
---|---|
get demo | 获取demo这个key的值,如果这个不存在则返回nil,也就是空。 |
注意: get 只能获取string类型的key ,在获取前可以先使用 type key
删除key
操作符 | 描述 |
---|---|
del demo | 删除demo这个key,删除成功返回 1,否则返回 0. |
del demo1 demo2 | 删除demo1 demo2 这两个key,返回:删除多少个成功就返回成功删除的个数。 |
重命名key
操作符 | 描述 |
---|---|
rename demo new_demo | 把demo这个key重命名为new_demo |
renamex demo new_demo | 把demo这个key重命名为new_demo,返回:改名成功返回 1,否则返回 0,如果new_demo这个key不存在,则发生改名。 |
###通配符
通配符 | 描述 |
---|---|
* | 通配任意多个字符 |
? | 通配单个字符 |
[] | 通配中括号内的某个字符,如:[adb] |
key的生命周期
-1 代表永久有效.
注意: 对于不存在的key或已过期的key / 不过期的key都返回 -1.redis2.8中,对于不存在的key返回-2
操作符 | 描述 |
---|---|
ttl demo | 查询demo这个key的生命周期,返回的是秒数 |
expire demo 10 | 设置demo这个key为10秒内有效. |
persist demo | 设置demo这个key为永久有效. |
pttl demo | 查询demo这个key的生命周期,返回的是毫秒. |
ttl : 查询key的生命周期
expire : 设置key的生命周期以秒为单位.
persist : 设置key为永久有效.
库级操作
redis 的数据库默认是16个,从0~15
操作符 | 描述 |
---|---|
move goods 2 | 把goods这个key移动到2号数据库.当前的数据库就没有了这个key. |
select 2 | 进入2号数据库 |
flushdb | 清空当前库中的所有key |
String类型的操作
一次性创建一个字符串
set key value [ex 秒数] / [px 毫秒数] [nx]/[xx]
nx 表示 key 不存在时,执行操作。
xx 表示 key 存在时,执行操作
如下:
操作符 | 描述 |
---|---|
set demo value ex 100 | 创建demo这个key的生命周期为100秒 |
set demo value px 9000 | 创建demo这个key的生命周期为9000毫秒 |
set demo value nx | 不存在demo这个key时就创建。 |
set dmeo value xx | 存在demo这个key时就创建 |
如果ex,px同时写,以后面的有效期为准。
一次性创建多个字符串
使用的是 mset key1 value1 key2 value2 ….
如下用法:
mset demo demo_value demo1 demo1_value
获取多个字符串的key
mget demo demo1
偏移字符串
setrange key offset value
offset:从什么位置开偏移,
value:偏移后的值。
如下:
set hello world #创建key
setrange hello 2 xx # 变成了 worxd
setrange hello 2 ???? # 变成了 wor????
注意:如果超过字符串的长度,redis就会使用\x00来替换。
如下:
set world hello #这个key的长度只有5个
setrange world 6 ! # 显示:hello\x00!
尾部追加字符串
set demo value
append demo 2222 # value2222
获取字符串范围的值
注意:对于字符串的下标,左数从0开始,右数从-1开始。
getrange key start stop
作用:是获取字符串中[start,stop]范围的值,包括自身下标。
如下:
set demo value
getrange demo 2 -3 #返回的是 lu
注意:
1、 start>=字符串length ,则返回空字符串。
2、 stop>=字符串length,则截取到字符串结尾。
3、 如果start所处位置在stop右边,返回空字符串。
getset key newvalue
作用:获取并返回旧值,设置新值。
增一减一操作
set age 10
自增一:incr age
get age 这次就变成了11
指定增加多少:incrby age 5
指定增加浮点数:incrbyfloat age 0.5
自减一:decr age
指定减少多少:decrby age 5
get age :这次就变成了10.
注意:不能自减太大了,比如age本身只有10,不能使用 decrby age 11
浮点数与整数之间不能进行相加相减
这种一般使用 秒杀商品。比如库存,让你来进行抢购资格,只有你抢到这个资格才能买这个商品。
从位的角度来把字母变小写
setbit key offset value
设置offset对应二进制位上的值
注意:
1、如果offset过大,则会在中间填充0
2、offset最大大到多少,2^32-1,即可推出最大的字符串为512M.
set char B
setbit char 2 1; //char的值就会变为b
get char
setbit char 2 0;//char的值就会变为B
bitop operation destkey key1 key1..
对key1,key2..keyN作operation并将结果保存到destkey上。operation可以是 AND ,OR,NOT ,XOR.
setbit lower 2 1
get lower # " "
set char Q
bitop or char char lower
get char # "q"
注意:对于NOT操作,key不能多个。