您的位置:首页 > 数据库 > Redis

Redis操作命令

2015-12-14 20:46 639 查看
redis命令速查:http://doc.redisfans.com/

Redis的key通用操作

命令作用
keys *,?,[]*通配所有字符,?通配一个字符,[]通配括号中所包含的字符
randomkey返回随机key
type key查看对应key的数据类型
exists key判断某个key是否存在
del key1 key2删除对应的key1、key2等,多个key中间用空格分隔
rename key1 key2修改key1为key2,如果key2已存在,key2值将被覆盖
renamenx key1 key2修改key1为key2,如果key2已存在,则修改失败
move key db移动key到指定db空间,redis默认16个db空间,可通过select num来切换db空间
expire key 整型值设置key的生命周期以秒为单位
pexpire key 整型值设置key的生命周期以毫秒为单位
ttl key查询指定key的有效期,以秒为单位,-1代表永久有效;不存在key也返回-2
pttl key查询指定key的有效期,以毫秒为单位
persist key设置指定key永久有效

Redis字符串类型的操作

set key value [ex 秒数] / [px 毫秒数]  [nx] /[xx]


如: set a 1 ex 10 , 10秒有效

Set a 1 px 9000 , 9秒有效

注: 如果ex,px同时写,以后面的有效期为准

如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒

nx: 表示key不存在时,执行操作

xx: 表示key存在时,执行操作

mset  multi set , 一次性设置多个键值


例: mset key1 v1 key2 v2 ….

get key

作用:获取key的值

mget key1 key2 ..keyn


作用:获取多个key的值

setrange key offset value


作用:把字符串的offset偏移字节,改成value

redis 127.0.0.1:6379> set greet hello
OK
redis 127.0.0.1:6379> setrange greet 2 x
(integer) 5
redis 127.0.0.1:6379> get greet
"hexlo"


注意: 如果偏移量>字符长度, 该字符自动补0x00

redis 127.0.0.1:6379> setrange greet 6 !
(integer) 7
redis 127.0.0.1:6379> get greet
"heyyo\x00!"


append key value


作用: 把value追加到key的原值上

getrange key start stop


作用: 是获取字符串中 [start, stop]范围的值

注意: 对于字符串的下标,左数从0开始,右数从-1开始

redis 127.0.0.1:6379> set title 'chinese'
OK
redis 127.0.0.1:6379> getrange title 0 3
"chin"
redis 127.0.0.1:6379> getrange title 1 -2
"hines"


注意:

1: start>=length, 则返回空字符串

2: stop>=length,则截取至字符结尾

3: 如果start 所处位置在stop右边, 返回空字符串

getset key newvalue


作用: 获取并返回旧值,设置新值

redis 127.0.0.1:6379> set cnt 0
OK
redis 127.0.0.1:6379> getset cnt 1
"0"
redis 127.0.0.1:6379> getset cnt 2
"1"


incr key


作用: 指定的key的值加1,并返回加1后的值

注意:

1:不存在的key当成0,再incr操作

2: 范围为64有符号

incrby key number
redis 127.0.0.1:6379> incrby age  90
(integer) 92


incrbyfloat key floatnumber
redis 127.0.0.1:6379> incrbyfloat age 3.5
"95.5"


decr key
redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age
(integer) 19


decrby key number
redis 127.0.0.1:6379> decrby age 3
(integer) 16


getbit key offset


作用:获取值的二进制表示,对应位上的值(从左,从0编号)

redis 127.0.0.1:6379> set char A
OK
redis 127.0.0.1:6379> getbit char 1
(integer) 1
redis 127.0.0.1:6379> getbit char 2
(integer) 0
redis 127.0.0.1:6379> getbit char 7
(integer) 1


setbit  key offset value


设置offset对应二进制位上的值

返回: 该位上的旧值

注意:

1:如果offset过大,则会在中间填充0,

2: offset最大大到多少

3:offset最大2^32-1,可推出最大的的字符串为512M

bitop operation destkey key1 [key2 ...]


对key1,key2..keyN作operation,并将结果保存到 destkey 上。

operation 可以是 AND 、 OR 、 NOT 、 XOR

redis 127.0.0.1:6379> setbit lower 7 0
(integer) 0
redis 127.0.0.1:6379> setbit lower 2 1
(integer) 0
redis 127.0.0.1:6379> get lower
" "
redis 127.0.0.1:6379> set char Q
OK
redis 127.0.0.1:6379> get char
"Q"
redis 127.0.0.1:6379> bitop or char char lower
(integer) 1
redis 127.0.0.1:6379> get char
"q"


注意: 对于NOT操作, key不能多个

Link链表结构操作

命令作用
lpush/rpush key value把值插入到链接头、尾部
lpop/rpop key返回并删除链表头、尾元素
lrange key start stop返回链表中【start,stop】中的元素;规律:左数从0开始,右数从-1开始
lrem key count value作用:从key链表中删除value值;注:删除count的绝对值个value后结束;count>0 从表头删除;count<0 从表尾删除
ltrim key start stop作用:剪切key对应的链接,切【start,stop】一段,并把该段重新赋给key
lindex key index作用:返回index索引上的值;如 lindex key 2
llen key计算链表的元素个数
linsert key after/before value1 value2在key链表中寻找‘value1’,并在‘value1’值之前或之后插入value2;注:一旦找到一个‘value1’后命令结束,不会插入多个value2
rpoplpush source dest把source的尾部拿出,放在dest的头部,并返回该单元值
brpop/blpop key timeout等待弹出key的尾/头元素,timeout为等待超时时间,如果timeout为0,则一直等待

集合set相关命令

集合的性质: 唯一性,无序性,确定性;但,因为集合的无序性,无法通过下标或范围来访问部分元素,因此想看元素,要么随机先一个,要么全选
注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素


命令作用
sadd key value1 value2……往集合key中增加元素value1、value2……
srem key value1 value2删除集合中指定值的元素,返回忽略不存在的元素后,真正删除掉元素的个数
spop key返回并删除集合中key中随机元素
srandmember key返回集合key中,随机的一个元素
smembers key返回集合中所有的元素
sismember key value查看指定元素是否存在在集合中
scard key返回集合中元素的个数
smove source dest value把source中的value删除,并添加到dest集合中
sinter key1 key2 key3求出key1 key2 key3三个集合中的交集,并返回
sinterstore dest key1 key2 key3求出key1 key2 key3三个集合中的交集,并赋给dest
sunion key1 key2 ……求出多个集合的并集,并返回
sdiff key1 key2……求出多个集合的差集

order set 有序集合

命令作用
zadd key score1 value1 score2 value2..添加一个或多个元素
zrem key value1 value2……删除集合中的元素
zremrangebyscore key min max删除score值在[min,max]之间的
zrank key member查询member的排名(升序0名开始)
zrevrank key member查询member的排名(降序0名开始)
zrange key start stop [withscores]把集合排序后,返回名词[start,stop]的元素,默认升序排列,withscores是把score打印出来
zrevrange key start stop把集合降序排列,取名字[start,stop]之间的元素
zrangebyscore key min max [withscores] limit offset N集合(升序)排序后,取score在[min,max]内的元素,并跳过offset个,去除N个
zcard key返回元素个数
zcount key min max返回[min,max]区间内元素的数量
zinterstore destination numkeys key1 [key2…] [weights weight [weight…]] [aggregate sum/min/max]求key1,key2的交集,key1,key2的权重分别是 weight1,weight2;聚合方法用: sum/min/max;聚合的结果,保存在dest集合内
zunionstore destination numkeys key1 [key2…] [weights weight [weight…]] [aggregate sum/min/max]求key1,key2的并集,key1,key2的权重分别是 weight1,weight2;聚合方法用: sum/min/max;聚合的结果,保存在dest集合内
注意: weights ,aggregate如何理解?
答: 如果有交集, 交集元素又有socre,score怎么处理?
Aggregate sum->score相加, min求最小score, max 最大score
另: 可以通过weigth设置不同key的权重, 交集时,socre * weights


redis 127.0.0.1:6379> zadd z1 2 a 3 b 4 c
(integer) 3
redis 127.0.0.1:6379> zadd z2 2.5 a 1 b 8 d
(integer) 3
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1
1) "b"
2) "a"
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "4"
3) "a"
4) "4.5"
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate sum
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "4"
3) "a"
4) "4.5"
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 aggregate min
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "1"
3) "a"
4) "2"
redis 127.0.0.1:6379> zinterstore tmp 2 z1 z2 weights 1 2
(integer) 2
redis 127.0.0.1:6379> zrange tmp 0 -1 withscores
1) "b"
2) "5"
3) "a"
4) "7"


Hash 哈希数据类型相关命令

命令作用
hset key field value把key中field域的值设为value
hmset key field1 value1 [field2 value2 …]设置field1->N个域,对应的值是value1->N
hget key field返回key中field域的值
hmget key field1 field2 fieldN返回可以中field1…域的值
hgetall key返回key中所有域与其值
hdel key field删除key中field
hlen key返回key中元素的数量
hexists key field判断key中没有field域
hincrby key field value把key中的field域的值增长整型值value
hincrbyfloat key field value把key中的field域的值增长浮点值value
hkeys key返回key中所有的field
hvals key返回key中所有的value
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: