1 Redis数据类型
1.1 String
Key'[{"CityId":18,"CityName":"xian","ProvinceId":27,"CityOrder":1},{"CityId":53,"CityName":"guangzhou","ProvinceId":27,"CityOrder":1}]'
最为基础的数据存储类型。可以存储字符串和二进制数据,在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
命令 | 描述
| 例子
|
Set
| 赋值
| SET key value
|
Get
| 获取值
| GET key
|
APPEND
| 追加字符串
| APPEND key value
|
DECR
| 减少值
| DECR key
|
INCR
| 增加值
| INCR key
|
DECRBY
| 设置减少数值的步长
| DECRBY key decrement
|
INCRBY
| 设置增加数值的步长
| INCRBY key increment
|
GETSET
| 先获取值再赋值,原子性操作
| GETSET key value
|
STRLEN
| 返回key的长度
| STRLEN key
|
SETEX
| 设置key在服务器中存在的时间
| SETEX key seconds value
|
SETNX
| Key不存在设置值,否则不做操作
| SETNX key value
|
SETRANGE
| 字符串替换
| SETRANGE key start "value"
|
GETRANGE
| 截取字符串
| GETRANGE key start end
|
SETBIT
| 设置二进制的值
| SETBIT key offset value
|
GETBIT
| 获取二进制的值
| GETBIT key offset
|
MGET
| 返回多个key的值
| MGET key [key ...]
|
MSET
| 设置多个key、value
| MSET key value [key value ...]
|
MSETNX
| Key不存在设置多个key、value值,否则不做操作
| MSETNX key value [key value ...]
|
1.2 List
List类型是按照插入顺序排序的字符串链表(相当于java的linkedlist)。可以在链表的两头插入或删除元素,List中可以包含的最大元素数量是4294967295。
命令
| 描述
| 例子
|
LPUSH
| 在list头部添加多个值
| LPUSH key value [value ...]
|
LPUSHX
| Key存在则添加值,否则不做操作
| LPUSHX key value
|
LRANGE
| 遍历list中key数据
| LRANGE key start stop
|
LPOP
| 从头部弹出key中的值
| LPOP key
|
LLEN
| 返回key的长度
| LLEN key
|
LREM
| 删除前面几个值等于某值得元素
| LREM key count value
|
LSET
| 给下标赋值
| LSET key index value
|
LINDEX
| 返回下标中的值
| LINDEX key index
|
LTRIM
| 截取list中的值
| LTRIM key start stop
|
LINSERT
| 在某个值的前面或者后面插入值
| LINSERT key BEFORE|AFTER pivot value
|
RPUSH
| 在list尾部添加多个值
| RPUSH key value [value ...]
|
RPUSHX
| 在list尾部添加单个值
| RPUSHX key value
|
RPOP
| 从尾部弹出值
| RPOP key
|
RPOPLPUSH
| 从一个集合尾部弹出值插入到里一个集合的头部
| RPOPLPUSH source destination
|
1.3 Hash
Hashes类型可以看成具有String Key和String Value的map容器(就相当于java中的hashmap类型)。非常适合于存储值对象的信息。如Username、Password和Age等。
命令
| 描述
| 例子
|
HSET
| 给key中filed字段赋值
| HSET key field value
|
HGET
| 获取key中filed的值
| HGET key field
|
HEXISTS
| 判断filed是否存在 0 、1
| HEXISTS key field
|
HLEN
| 获取key 的长度
| HLEN key
|
HDEL
| 删除file字段
| HDEL key field [field ...]
|
HSETNX
| 如果filed不存赋值否则不做操作
| HSETNX key field value
|
HINCRBY
| 给filed增加步长
| HINCRBY key field increment
|
HGETALL
| 获取所有的filed和value
| HGETALL key
|
HKEYS
| 获取key
| HKEYS key
|
HVALS
| 获取value
| HVALS key
|
HMGET
| 获取所有filed字段的值
| HMGET key field [field ...]
|
HMSET
| 设置多个filed字段value
| HMSET key field value [field value ...]
|
1.4 Set
Set类型看作为没有排序的字符集合,Set集合中不允许出现重复的元素,redis可以在服务器端完成多个Sets之间的计算操作,如unions、intersections和differences。这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销
命令
| 描述
| 例子
|
SADD
| 添加值
| SADD key member [member ...]
|
SMEMBERS
| 遍历集合
| SMEMBERS key
|
SCARD
| 获取key的成员数量
| SCARD key
|
SISMEMBER
| 判断成员是否存在
| SISMEMBER key member
|
Spop
| 随机弹出值
| Spop key
|
SREM
| 删除指定的成员
| SREM key member [member ...]
|
SRANDMEMBER
| 随机返回成员,不删除原值
| SRANDMEMBER key
|
SMOVE
| 移动一个集合的成员到另一个集合
| SMOVE source destination member
|
SDIFF
| 求集合差集
| SDIFF key [key ...]
|
SDIFFSTORE
| 集合中的差集存储到新集合中
| SDIFFSTORE destination key [key ...]
|
SINTER
| 求集合交集
| SINTER key [key ...]
|
SINTERSTORE
| 将集合交集存储到新集合
| SINTERSTORE destination key [key ...]
|
SUNION
| 求集合并集
| SUNION key [key ...]
|
SUNIONSTORE
| 将集合的并集存储到新集合
| SUNIONSTORE destination key [key ...]
|
1.5 Sortedset
不允许出现重复的元素,每一个成员都会有一个分数(score)与之关联,用分数来进行排序,分数是可以重复的
命令
| 描述
| 例子
|
ZADD
| 添加排序成员
| ZADD key score member [score] [member]
|
ZCARD
| 获取成员数量
| ZCARD key
|
ZCOUNT
| 获取分数在min和max之间成员有多少个
| ZCOUNT key min max
|
ZINCRBY
| 增加指定成员的分数
| ZINCRBY key increment member
|
ZRANGE
| 遍历成员以及分数
| ZRANGE key start stop [WITHSCORES]
|
ZRANGEBYSCORE
| 返回分数在min和max之间的成员和分数
| ZRANGEBYSCORE key min max [WITHSCORES]
|
ZRANK
| 返回成员的下标
| ZRANK key member
|
ZREM
| 删除指定成员
| ZREM key member [member ...]
|
ZREVRANGE
| 遍历成员以及分数从大到小
| ZREVRANGE key start stop [WITHSCORES]
|
ZREVRANK
| 返回成员下标顺序从大到小
| ZREVRANK key member
|
ZSCORE
| 获取指定成员的分数
| ZSCORE key member
|
ZREVRANGEBYSCORE
| 获取成员以及分数按照从高到低
| ZREVRANGEBYSCORE key max min [WITHSCORES]
|
ZREMRANGEBYRANK
| 删除下标之间的数据
| ZREMRANGEBYRANK key start stop
|
ZREMRANGEBYSCORE
| 删除分数在min和max中的成员
| ZREMRANGEBYSCORE key min max
|
1.6 对于key的应用命令
用对key的操作,通常可以用来维护数据
命令
| 描述
| 例子
|
KEYS
| 获取所有的key
| KEYS pattern
|
Del
| 删除指定的key
| DEL key [key ...]
|
EXISTS
| 判断key是否存在
| EXISTS key
|
MOVE
| 移动一个key到另一个库中
| MOVE key db
|
RENAME
| 给key从新命名
| RENAME key newkey
|
RENAMENX
| 修改key的名字
| RENAMENX key newkey
|
PERSIST
| 持久化key
| PERSIST key
|
EXPIRE
| 设置key存活时间
| EXPIRE key seconds
|
EXPIREAT
| 设置key存活时间(年月日)
| EXPIREAT key timestamp
|
TTL
| 实时查看key存活时间
| TTL key
|
RANDOMKEY
| 随机返回一个key
| RANDOMKEY
|
TYPE
| 查看key的中value数据类型
| TYPE key
|
SELECT
| 进入指定库
| SELECT NUM
|
1.7 消息发布、订阅
什么是消息:qq聊天、发个邮件、手机短信都可以称为消息
什么是发布:A发一个消息给B,A就是在发布消什么是订阅:B要想接收到A的消息需要添加A为好友,添加好友就是订阅场景:常用于构建类似在线聊天应用,网站内部消息系统
命令:发布频道消息:publish news 'today issunshine'订阅频道:subscribenews批量订阅:psubscribenew*