Redis数据类型及操作
一、String
1. 追加键值
append #Redis的append命令是往一个key追加value。如果没有key,则创建一个并且设置value
例:
redis-cli
exists abc
append abc 123
append abc 456
get abc
2. 设置、查看键值
set abc 'hello world!'
get abc
3. 获取字符长度
4. 递增递减及增减指定值
incr #该key的值递增1
decr #该key的值递减1
incrby #增加指定的整数
decrby #减少指定的整数
例:
set age 20
incr age
decr age
incrby age 10
decrby age -40
get age
del age
keys *
incr sky
keys *
注:这4条命令仅用于键值为整数
5. 指定键值过期时间
setex #设置指定Key的过期时间为xx秒
ttl key #查看键的剩余存活时间
setex name 10 'zhangsan'
ttl name
get name
等待10s
get name
ttl name
set name 'zhangsan'
ttl name
6. 不存在则创建指定键
setnx #创建指定键,若该键存在则不执行,不存在则执行
del name
setnx name zhang
setnx name san
get name
7. 批量设置、获取、不存在则设置键值
mset #批量设置键的值
mget #批量获取键的值
msetnx #批量设置键值,若有存在的键则不执行
mset c1 white c2 black
mget c1 c2
msetnx c2 blue c3 yellow
keys c*
msetnx c4 green c3 yellow
keys c*
get c2
二、list
1. 插入、返回键值
lpush #该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入到表头
lpushx #该命令仅当key存在时,将value值插入表头
lrange #返回列表中指定区间内的元素,0表示第一个元素,1表示第二个元素
lpush class a b c d
lrange class 0 -1
lpushx cloudd e
lpushx class e
lrange class 0 -1
2. 移除、查看键值个数
lpop #移除并返回第一个元素,从头开始
llen #查看列表中元素个数
3. 索引相关
lrem #从头部(left)向尾部(right)变量链表,删除2个值等于a的元素,返回值为实际删除的数量
lset #将索引值为xxx的元素值设置为新值xxx
lindex #获取索引值为xxx的元素值。
ltrim #仅保留索引值xxx到xxx的元素
lpush class a b c b b a
lrange class 0 -1
lrem class 2 b
lrange class 0 -1
lset class 1 b
lrange class 0 -1
lindex class 3
ltrim class 0 2
lrange class 0 -1
4. 前后插入键值
linsert #在键的xxx元素前/后插入新键值
lpush class a b c d e
lrange class 0 -1
linsert class before a 0
linsert class after e 1
lrange class 0 -1
三、hash
1. 字段操作
hset #给xx键设置字段为xx,值为xx
hget #获取xx键,字段为xx的值
hdel #删除xx键的xx字段,成功返回1
hexists #判断xx键中的xx字段是否存在,存在返回1
hlen #获取xx键的字段数量
hsetnx #给xx键添加新字段,是否执行基于此字段是否存在,不管键是否存在,返回1表示执行成功
hset hash class1 a class2 b class3 c
hget hash class1
hdel hash class2
hexists hash fclass2
hlen hash
hsetnx hash1 class3 d
keys has*
hsetnx hash class2 b
2. 增减字段键值
hincrby #给xx键的xx字段值加x
hset hash age 18
hincrby hash age 10
hget hash age
3. 批量设置、获取字段与键值
hmset #批量为xx键创建字段和赋值
hmget #获取指定多个字段值
hgetall #返回xx键的所有字段及其值,是逐对列出的
hkeys #仅获取xx键中所有字段名
hvals #仅获取xx键中所有字段值
hmset hash class1 a class2 b
hmget hash class1 class2
hkeys hash
hvals hash
四、set
1. 集合键名键值相关
sadd #将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合key不存在,则创建一个只包含添加的元素作成员的集合
smembers #通过smembers命令查看插入的结果,输出的顺序与插入顺序无关
scard #获取集合中成员的数量
sismember #判断键中xx成员是否存在,返回0表示不存在,1表示存在
sadd set a b c d e
smembers set
scard set
sismember set c
sismember set f
2. 集合字段修改相关
spop #随机的移除并返回键中的某一成员
srem #从键中移出xxx、xxx、xxx成员,并返回移出成员个数
srandmember #该命令随机的返回某一成员
smove #将键1的xx成员移到键2,成功返回1,失败返回0
sadd set a b c d e
spop set
srem set c d e
smembers set
srandmember set
smove set set1 b
keys set*
五、sorted set
分数应用相关
zadd #将一个或多个成员元素及其分数值加入到有序集当中
zcard #获取键中成员的数量
zcount #分数满足表达式x <= score <= x的成员的数量
zrem #删除成员xx、xx,返回实际删除成员的数量
zincrby #成员xx不存在,zincrby命令将添加该成员并假设其初始分数为0
zscore #获取成员xx的分数
zrank #获取成员xx的位置索引值
zadd zset 1 a 2 b 3 c 4 d 5 e
zrange zset 0 -1
zrange zset 0 -1 withscores
zrank zset e
zcard zset
zcount zset 2 4
zrem zset a b
zcard zset
zscore zset d
zincrby zset 2 a
zincrby zset -1 a
zrangebyscore #获取分数满足表达式x <= score <= x的成员
zremrangebyrank #删除位置索引满足表达式x <= rank <= x的成员。
zremrrangebyscore #删除分数满足表达式x <= score <= x的成员,并返回实际删除的数量。
del zset
zadd zset 1 a 2 b 3 c 4 d 5 e
zrangebyscore zset 2 4
zrangebyscore zset -inf +inf limit 2 3
zremrangebyscore zset 1 3
zrange zset 0 -1
zremrangebyrank zset 1 2
zrange zset 0 -1
zrevrange #以位置索引从高到低的方式获取并返回此区间内的成员
zrevrangebyscore #获取分数满足表达式x >= score >= x 的成员,并以从高到底的顺序输出。
zrevrank #获取成员索引
zadd zset 1 a 2 b 3 c 4 d 5 e
zrange zset 0 -1
zrevrange zset 0 -1
zrevrank zset b
zrank zset b
zrevrangebyscore zset 5 3
zrevrangebyscore zset 3 1 limit 1 2