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

设置多个keyvalue

MSET key value [key  value ...]

MSETNX

Key不存在设置多个keyvalue值,否则不做操作

MSETNX key value  [key value ...]

 

1.2   List

List类型是按照插入顺序排序的字符串链表(相当于javalinkedlist)。可以在链表的两头插入或删除元素,List中可以包含的最大元素数量是4294967295

命令

描述

例子

LPUSH

list头部添加多个值

LPUSH key value [value  ...]

LPUSHX

Key存在则添加值,否则不做操作

LPUSHX key value

LRANGE

遍历listkey数据

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 KeyString Valuemap容器(就相当于java中的hashmap类型)。非常适合于存储值对象的信息。如UsernamePasswordAge等。

命令

描述

例子

HSET

keyfiled字段赋值

HSET key field value

HGET

获取keyfiled的值

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

获取所有的filedvalue

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之间的计算操作,如unionsintersectionsdifferences。这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络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

获取分数在minmax之间成员有多少个

ZCOUNT key min max

ZINCRBY

增加指定成员的分数

ZINCRBY key increment member

ZRANGE

遍历成员以及分数

ZRANGE key start stop  [WITHSCORES]

ZRANGEBYSCORE

返回分数在minmax之间的成员和分数

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

删除分数在minmax中的成员

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发一个消息给BA就是在发布消

什么是订阅:B要想接收到A的消息需要添加A为好友,添加好友就是订阅

场景:常用于构建类似在线聊天应用,网站内部消息系统

命令:

发布频道消息:publish news 'today issunshine'

订阅频道:subscribenews

批量订阅:psubscribenew*