Redis总结
Redis数据类型
- Redis存储的是
key-value
类型的数据,每个数据都是一个键值对
- 键的类型是字符串
- 值的类型分为五种:
- 字符串
string
- 哈希
hash
- 列表
list
- 集合
set
- 有序集合
zset
- 字符串
Redis命令
操作string
的命令
- string是redis最基本的类型,最大能存储512MB数据
- string类型是二进制安全的,可以存储任何数据,如: 数字、图片、序列化对象等
设置命令
- 设置键值
SET key value
- 设置键值及过期时间,以秒为单位
SETEX key seconds value
- 设置多个键值
MSET key value [key value ...]
获取命令
- 根据键获取值,若键不存在则返回nil
GET key
- 根据多个键获取多个值
MGET key [key ...]
运算命令
运算命令要求所操作的值是数字
- 将key对应的value加1
INCR key
- 将key对应的value加整数
increment
INCRBY key increment
- 将key对应的value减1
DECR key
- 将key对应的value减整数
DECRBY key decrement
其它命令
- 追加值
APPEND key value
- 获取值长度
STRLEN key
操作键的命令
- 查找键,参数支持正则
KEYS pattern
- 判断键是否存在,如果存在返回1,不存在返回0
EXISTS key [key ...]
- 查看键对应的value的类型
TYPE key
- 删除键及对应的值
DEL key [key ...]
- 设置过期时间,以秒为单位
EXPIRE key seconds
- 查看有效时间,以秒为单位
TTL key
操作hash
的命令
hash用于存储对象,对象的格式为键值对
设置命令
- 设置单个属性
HSET key field value
- 设置多个属性
HMSET key field value [field value ...]
获取命令
- 获取一个属性的值
HGET key field
- 获取多个属性的值
HMGET key field [field ...]
- 获取所有属性和值
HGETALL key
- 获取所有的属性
HKEYS key
- 返回包含属性的个数
HLEN key
- 获取所有值
HVALS key
其它命令
- 判断属性是否存在
HEXISTS key field
- 删除属性及值
HDEL key field [field ...]
- 返回值的字符串长度
HSTRLEN key field
操作list
的命令
list
中元素必须为为string
类型,按照插入顺序排序- 在列表的头部或者尾部添加元素.
设置命令
- 在头部插入数据
LPUSH key value [value ...]
- 在尾部插入数据
RPUSH key value [value ...]
- 在一个元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
- 设置指定索引的元素值
- 索引下标从零开始
- 索引可以是负数,表示偏移量从list尾部开始计数. 如-1表示列表的最后一个元素
LSET key index value
获取命令
- 弹出
key
对应的list
的第一个元素LPOP key
- 弹出
key
对应的list
的最后一个元素RPOP key
- 返回存储在
key
列表里指定范围内的元素
- start 和 end 偏移量都是基于0的下标
- 偏移量也可以是负数,如-1表示列表的最后一个元素
LRANGE key start stop
其它命令
- 裁剪列表,将列表裁剪成原集合的一个子集
start
和end
为偏移量,下标从零开始- 偏移量也可以是负数,如-1表示列表的最后一个元素
LTRIM key start stop
- 返回存储在 key 里的list的长度
LLEN key
- 返回列表里索引对应的元素
LINDEX key index
操作set
的命令
set
中元素必须为为string
类型set
为无序集合,其元素具有唯一性,不重复
设置命令
- 添加元素
SADD key member [member ...]
- 获取
key
集合所有的元素SMEMBERS key
- 返回集合元素个数
SCARD key
其它命令
- 求多个集合的交集
SINTER key [key ...]
- 求某集合与其它集合的差集
SDIFF key [key ...]
- 求多个集合的合集
SUNION key [key ...]
- 判断元素是否在集合中
SISMEMBER key member
Redis发布订阅
发布者
与订阅者
发布者
不是计划发送消息给特定的订阅者
,而是将发布的消息分到不同的频道
,不需要知道什么样的订阅者
订阅.订阅者
对一个或多个频道
感兴趣,只需接收感兴趣的频道
,不需要知道发布者
的信息发布者
和订阅者
的解耦合可以带来更大的扩展性和更加动态的网络拓扑
推送消息
的格式
推送消息的格式包含三部分:
- part1:
消息类型
,包含三种:
1.subscribe
表示订阅成功
2.unsubscribe
表示取消订阅成功
3.message
表示其它终端发布消息 - 如果第一部分的值为
subscribe
,则第二部分是频道,第三部分是现在订阅的频道的数量 - 如果第一部分的值为
unsubscribe
,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道.当在Pub/Sub以外状态,客户端可以发出任何redis命令. - 如果第一部分的值为
message
,则第二部分是来源频道的名称,第三部分是消息的内容
命令
- 订阅
SUBSCRIBE 频道名称 [频道名称 ...]
- 取消订阅: 如果不写参数,表示取消所有订阅
UNSUBSCRIBE 频道名称 [频道名称 ...]
- 发布
PUBLISH 频道 消息