一、通用操作
1、添加字符串(返回结果OK,默认生命周期为永久有效)
set age 30
set site baidu.com
2、keys pattern 查找相应的key
redis里,允许模糊查询。有3个通配符 *,?,[]
1 keys * 模糊查询 列出所有结果key 2 keys sit[efygk] 模糊查询 3 keys s* 模糊查询 4 keys age 精确查询
5 keys ??? 模糊查询 列出一个key(注:字母排序第一的出现)
6 keys ag? 模糊查询 (没有意义,已3个字符串为例的键来说,必须输出前2个加?方可使用,否则提示empty or set)
3、随机出现key名
randomkey
4、返回key的存储类型
type age
5、判断一个key是否存在(返回结果:存在?1:0)
exists age
6、删除一个key(返回结果:成功?1:0)
del age
7、修改键名(返回结果:OK)
rename site siteurl
8、renamenx key newkey
作用:修改当前键名,赋值的新键名。返回结果:存在?1:0
site siteurl sohu.com
renamenx site siteurl
9、move key 1
一个redis进程,打开了不止一个数据库,默认打开16个数据库,编号0-15
1 keys * 2 move age 1 3 keys * 4 select 1 (选择编号1的数据库) 5 keys *
10、查询key的有效期(注:-1代表永久有效,不存在的key返回-2。返回的秒数)
ttl newsite
11、设置key的生命周期(时间:秒)
expire newsite 20
12、设置毫秒(成功返回1)
pexpire newsite 9000
pttl newsite
13、设置key的生命周期(永久有效,成功返回1)
persist age
14、清空数据库
flushdb
二、String类型的操作
1、set key value [ex 秒数] /[px 毫秒数] [nx]/[xx]
nx:表示key不存在时,执行操作
xx:表示key存在时,执行操作
注:如果ex和px同时写,以后面的有效期为准
set search sina.com ex 10 nx
2、一次设置多个键值
mset a 123 b 456 c678 d 91011
keys *
3、一次获取多个键值
mget a b c
4、setrange key offset value(设置偏移量)
1 set aa hello 2 setrange aa 2 ?? 3 get aa
注:如果偏移量>字符串长度,字符串自动以x00来补充
5、append key value (尾部追加值)
append aa wold
6、getrange key start stop(获取指定范围内的值,返回结果:值)
getrange aa 0 2
注:
- start>=length 返回字符串
- stop>=length 截取至字符串
- start所处位置在stop右边,返回空字符串
7、getset key value(执行成功之后,结果中:返回上一次的值,并设置新值,然后在运行get key,即可得到刚刚getset的新值)
getset aa helloworld
8、incr key number(age+1,返回结果:值)
incr age
9 decr key number
decr age
10、incrby age number
incrby age 5(原有值加5)
11、decrby age number
12、incrbyfloat key floatnumber
incrbyfloat age 0.5
13、setbit key offset value(设置offset对应的二进制位上的值,返回该位上的值)
注:1、偏移量过大,则会在中间填充0;2、offset最大大到多少:512MB
set a a
setbit a 2 0(返回结果大A)
14、bitop operation destkey key1 [key2...]
对key1,key2..keyN作operation并将结果保存到destkey 上。
operation可以是and、or、not、xor
setbit lower 2 1 set char Q bitop or char char lower
注:对于not操作,key不能多个
三、link 链表结果
1、lpush key value(把值插入到链接头部)
2、rpush key value
3、lrange key start stop[返回链表中[start stop]中的元素。规律:左数从0开始,右数从-1开始]
lrange character 0 -1 取出所有数据
4、rpop key 返回并删除链表尾部元素
5、lpop key
6、lrem key count value
- 从链表中删除value的值
- 注:删除count的绝对值个value后结束
- count>0从表头开始删除
- count<0从表尾开始删除
1 lpush answer a b c a b d a 2 lrange answer 0 -1 3 lrem answer 1 a 4 lrange answer 0 -1
结果:b c a b d a(左到右开始删除。如果要从尾部开始,则为-1)
7、ltrim key start stop 截取
1 rpush character a b c d e f 2 lrange character 0 -1 3 ltrim character 2 5 4 lrange character 0 -1
8、lindex key index 返回index索引上的值
lindex character 1
9、llen key 统计元素个数
llen character
10、linsert num before value value在某个值前面插入值(失败返回-1,成功返回元素个数)
1 rpush num 1 3 4 5 6 7 8 2 lrange num 0 -1 3 linsert num before 3 2 4 lrange num 0 -1 5 结果 1 2 3 4 5 6 7 8
11、linser num after value value
12、bpro,blpop key timeout
作用:等待弹出key的尾/头元素
场景:长轮询 ajax,在线聊天
brpop num 20
四、Hash 哈希数据类型相关命令
1、hset key field value
作用: 把key中 filed域的值设为value
注:如果没有field域,直接添加,如果有,则覆盖原field域的值
hset user1 name zhangsan hset user2 age 20 hset height 190
2、hmset key field value[field value]
作用: 设置field1->N 个域, 对应的值是value1->N
(对应PHP理解为 $key = array(file1=>value1, field2=>value2 ....fieldN=>valueN))
hmset user2 name lisi age 21 height 190
3、hgetall key 获取多个值
hgetall user2
4、hget key field 获取指定name的value
hget user2 name
5、hlen key查看有多少个值域
hlen user2
6、hdel key field 删除一个name
hdel user2 name
7、hexists key field 判断key中有没有field域
hexists user2 age
8、hincrby key field increment 把key中的field域的值增长整型值value
hincrby user1 age 20
8、hincrbyfloat key field increment 把key中的field域的值增长整型值value()
hincrbyfloat user1 age 0.5
9、hkeys key 返回key中的所有域
hkeys user1
10、hvals key 返回所有的值
hvals user1