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*