5种基本数据类型
String
String是Redis中最简单的一种数据结构。在Redis中,所有的Key都是字符串,但是不同的key对应的value的具备的数据结构不同。
Redis中的字符串是动态字符串,内部阔以修改,像StringBuffer, 采用分配冗余空间的方式来减少内存的频繁分配。
在Redis内部结构中,一般实际分配的内存会大于实际需要的内存,当字符串小于 1M 时,扩容是在当前空间基础上加倍。扩容每次扩1M,最大512M
常用的基础命令
set | 给一个key赋值 |
---|---|
append | 使用 append 命令时,如果 key 已经存在,则直接在对应的 value 后追加值,否则就创建新的键值对 |
decr | 阔以实现对 value 的减1操作(value必须为数字)否则报错 value不存在 会有默认值0 |
decrby | 与decr功能类似 但是阔以自行设置 减去多少 |
get | 获取key的value |
getrange | 用来返回一个key的子串 功能类似Java中的 substring 用法[getrange key m n]m起始 n结束 |
getset | 获取并更新某个key |
incr | 自增1 |
incrby | 阔以自行设置增加多少 |
incrbyfloat | 与incrby功能一样 但是阔以设置浮点数 |
mget | 批量获取 |
mset | 批量设置 |
ttl | 查看key的有效期 |
setex | 赋值的同时,设置过期时间 |
setnx | 如果key存在则赋值无效,不存在则功能与set一致 |
setrange | 覆盖一个已经存在的key的value |
strlen | 查看字符串长度 |
BIT命令
在Redis中,字符串是以二进制的方式存储。BIT相关的命令直接对二进制进行操作。
List
列表用来存储多个有序的字符串,一个列表最多可以存储2^32 - 1个元素,在redis中可以对列表的两端插入push和弹出pop,还可以取指定范围的元素。
常用的基础命令
lpush | 表示将value从左往右一次插入表头位置 |
---|---|
lrange | 返回指定区间内的元素 |
lpop | 移除并返回列表的头元素 |
rpush | 与lpush功能相反 |
rpop | 移除并返回列表的尾元素 |
lindex | 返回列表中 index 的元素 |
ltrim | 对列表进行修剪 |
blpop | 阻塞式的弹出 相当于 lpop 的阻塞版 |
Set
集合是用来保存多个字符串的元素,内部不允许有重复远古三,集合内的元素是无序的,Redis支持集合的增删改查,同时支持多个集合取交集,并集,差集。
常用的基础命令
sadd | 添加一个元素到 key 中 |
---|---|
smembers | 获取一个 key 下的所有的元素 |
srem | 移除指定元素 |
sismember | 返回某一个成员是否在集合中 |
scard | 返回集合数量 |
srandmember | 随机返回一个元素 |
spop | 随机返回并且出栈一个元素 |
smove | 移动一个元素到另一个集合中 |
sdiff | 返回两个集合的差集 |
sdiffstore | 返回两个集合的差集并存储在一个新的集合中 |
sinter | 返回两个集合的交集 |
sinterstore | 返回两个集合的交集并存储在一个新的集合中 |
sunion | 求并集 |
sunionstore | 返回两个集合的并集并存储在一个新的集合中 |
Hash
Hash一般也被称为字典,redis自己也可以作为一个比较大的hash存储。
常用的基础命令
hset | 添加值 |
---|---|
hget | 获取值 |
hmset | 批量添加 |
hmget | 批量减少 |
hdel | 删除指定的filed |
hsetnx | 默认情况下,如果 key 和 field 相同,会覆盖掉已有的 value,hsetnx 则不会 |
hvals | 获取所有的value |
hgetall | 获取所有的key和value |
hexists | 返回的filed是否存在 |
hincrbyfloat | 自增一个浮点数 |
hlen | 返回某个key的value数量 |
hstrlen | 返回key中filed的字符串长度 |
ZSet
有序集合。它保留了元素不能重复的特性,并且元素是有序的。
常用的基础命令
zadd | 添加指定元素到有序集合中 |
---|---|
zscore | 返回member的score值 |
zrange | 返回集合中一组元素 |
zreverange | 倒序返回一组元素 |
zcard | 返回元素个数 |
zount | 返回 score 在某一个区间内的元素 |
zrangebyscore | 按照 score 的范围返回元素 |
zrank | 返回元素的排名(从小到大 |
zrevrank | 返回元素排名(从大到小 |
zincrby | score 自增 |
zinterstore | 给两个集合求交集 |
zrem | 弹出一个元素 |
zlexcount | 计算有序集合中成员的数量 |
zrangebylex | 返回指定区间内的成员 |