redis 常用数据结构

redis支持5种常用的数据类型,这其实是存在很大的歧义。redis里存的都是二进制数据,其实就是字节数组(byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,整数或对象,此时才具有数据类型。

这一点必须要记住。所以任何东西只要能转化成字节数组(byte[])的,都可以存到redis里。管你是字符串、数字、对象、图片、声音、视频、还是文件,只要变成byte数组。

因此redis里的String指的并不是字符串,它其实表示的是一种最简单的数据结构,即一个key只能对应一个value。这里的key和value都是byte数组,只不过key一般是由一个字符串转换成的byte数组,value则根据实际需要而定。

在特定情况下,对value也会有一些要求,比如要进行自增或自减操作,那value对应的byte数组必须要能被解码成一个数字才行,否则会报错。

那么List这种数据结构,其实表示一个key可以对应多个value,且value之间是有先后顺序的,value值可以重复。

Set这种数据结构,表示一个key可以对应多个value,且value之间是没有先后顺序的,value值也不可以重复。

Hash这种数据结构,表示一个key可以对应多个key-value对,此时这些key-value对之间的先后顺序一般意义不大,这是一个按照名称语义来访问的数据结构,而非位置语义。

Sorted Set这种数据结构,表示一个key可以对应多个value,value之间是有大小排序的,value值不可以重复。每个value都和一个浮点数相关联,该浮点数叫score。元素排序规则是:先按score排序,再按value排序。

string 字符串

set mset
get mget
incr,当键不存在时,初始为0;incrby key increment,返回增加后的键的值
decr decrby
incrbyfloat key increment ,增加指定浮点数
append key value,向尾部追加值,返回值的长度
strlen key 获取字符串长度
getrange key start end 返回key中字符串值区间内的字符
getset key value 设置新值,返回旧值
getbit key offset;setbit key offset value;bitop operation destkey key [key …] 位操作
setex key seconds value,设置key的同时设置过期时间
setnx key value,只有key不存在时设置key的值

hash 散列

hset | hmset key field value []
hget | hmget key field
hgetall key
hexists key field 判断字段是否存在
hsetnx key field value 当字段不存在时赋值
hincrby key field value 增加数字
hdel key field [field…] 删除字段
hkeys key;hvals key 只获取字段名或字段值
hlen key 获得字段数量
hincrby key field increment

list 列表

lpush rpush
lrange key start stop;0 -1 获取所有
lpop rpop blpop brpop 弹出一个元素
llen 列表元素个数
lrem key count value,删除列表中前count个值为value 的元素
lindex key index 获取指定索引的元素值,下标从0 开始
lset key index value 设置指定索引的元素值
ltrim key start end 保留列表指定片段
linsert key before|after pivot value,在指定元素povit的前面或者后面插入元素
rpoplpush 将元素从一个列表转换到另一个列表(弹出一个元素)

set 集合

sadd | srem key member
smembers key 获取集合中的所有元素
sismember key member 判断元素是否在集合中
集合间运算
sdiff key [key…],差集
sinter key [key…],交集
sunion key [key…],并集
scard 获得集合中元素个数
sdiffstore | sinterstore | sunoinstore destination key [key …],进行集合运算并将结果存储
srandmember key [count] 随机获取集合中的元素
spop 随机弹出一个元素
srem key member1 member2,移除集合中一个或多个元素
smove source destination member,将member元素从source集合移动到destination集合

zset|sorted set 有序集合

有序集合和无序集合一样也是String类型元素的集合,且不允许重复的成员;不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序;有序集合的成员是唯一的,但分数(score)却可以重复

zadd key score member [score member],增加元素,也可以用该命令修改分数
zscore key member 获得元素的分数
获得排序在某个范围的元素列表
zrange key start stop [withscores] start|stop都是索引,从0开始。升序
zrevrange key start stop [withscores] 降序
zrangebyscore key min max [withscores] [limit offset count] 获取指定分数范围的元素(包括min和max)
zincrby key increment member 增加某个元素的分数
zcard key 获得集合中元素的数量
zcount key min max 获得指定分数范围内的元素个数
zrem key member [member…] 删除一个或多个元素
zremrangebyrank key start stop 按照排名范围删除元素 [start, stop]
zremrangebyscore key min max 按照分数范围删除元素
获的元素的排名
zrank key member
zrevrank key member
有序集合的交集

其他常用命令

keys pattern 获得复合规则的键名列表 keys * 获取所有键; keys user* 获取所有test开头的键
exists key 判断一个键是否存在 1存在,0不存在
del key 删除键
type key 获得键值的数据类型
flushdb 清除当前库中的所有key
flushall 删除所有数据库的所有key
sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern …]] [ASC | DESC] [ALPHA] [STORE destination] 返回或保存给定列表、集合、有序集合 key 中经过排序的元素;排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
ttl key 查看key的过期时间 -1未设置过期时间,-2不存在的key
select index 切换数据库

更多命令参见:http://redis.readthedocs.io/en/2.6/key/ttl.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值