字符串类型String
赋值与取值SET GET
SET key value
GET key
一个字符串类型键允许存储的数据的最大容量是512MB。
Redis对于键的命名并没有强制的要求,但比较好的实践是用“对象类型:对象ID:对象属性”来命名一个键,如使用键user:1:friends来存储ID为1的用户的好友列表。对于多个单词则推荐使用“.”分隔。
递增数字INCR
当要操作的键不存在时会默认键值为0,所以第一次递增后的结果是1。当键值不是整数时Redis会提示错误。
redis>INCR num
(integer) 1
redis>INCR num
(integer) 2
redis>SET foo lorem
OK
redis>INCR foo
(error) ERR value is not an integer or out of range
其他更多:
增加指定的整数INCRBY
INCR key
INCRBY key decrement
减少指定的整数DECR DECRBY
DECR key
DECRBY key decrement
增加指定浮点数INCRBYFLOAT
INCRBYFLOAT key increment
向尾部追加值APPEND
APPEND key value
获取字符串长度STRLEN
STRLEN key
同时获得/设置多个键值MGET MSET
MGET key [key …]
MSET key value [key value …]
位操作GETBIT SETBIT BITCOUNT BITOP
GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end]
BITOP operation destkey key [key …]
散列类型hash
赋值与取值
HSET key field value
HGET key field
HMSET key field value [field value …]
HMGET key field [field …]
HGETALL key
判断字段是否存在
HEXISTS key field
HEXISTS命令用来判断一个字段是否存在。如果存在则返回1,否则返回0(如果键不存在也会返回0)。
当字段不存在时赋值
HSETNX key field value
增加数字
HINCRBY key field increment
删除字段
HDEL key field [field …]
列表类型list
列表类型是使用双向列表实现的,向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。但是通过索引访问较慢。
向列表两端增加元素
LPUSH key value [value …]
RPUSH key value [value …]
从列表两端弹出元素
LPOP key
RPOP key
获取列表中元素的个数
LLEN key
获得列表片段
LRANGE key start stop
删除列表中指定的值
LREM key count value
●当count>0时LREM命令会从列表左边开始删除前count个值为value的元素;
●当count<0时LREM 命令会从列表右边开始删除前|count|个值为value的元素;
●当count=0是LREM命令会删除所有值为value的元素。
集合类型set
增加/删除元素
SADD key member [member …]
SREM key member [member …]
SADD命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。因为在一个集合中不能有相同的元素,所以如果要加入的元素已经存在于集合中就会忽略这个元素。本命令的返回值是成功加入的元素数量(忽略的元素不计算在内)。
redis>SADD letters a
(integer) 1
redis> SADD letters a b c
(integer) 2
判断元素是否在集合中
SISMEMBER key member
集合间运算
SDIFF key [key …]
SINTER key [key …]
SUNION key [key …]
有序集合类型sorted set
在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是它们的分数却可以相同。
有序集合类型在某些方面和列表类型有些相似
(1)二者都是有序的。
(2)二者都可以获得某一范围的元素。
有序集合与列表类型的不同点
(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。
(2)有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
(3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
(4)有序集合要比列表类型更耗费内存。
增加元素
ZADD key score member [score member …]
分数不仅可以是整数,还支持双精度浮点数
redis>ZADD testboard 17E+307 a
(integer) 1
redis>ZADD testboard 1.5 b
(integer) 1
redis>ZADD testboard +inf c
(integer) 1
redis>ZADD testboard -inf d
(integer) 1
获得元素的分数
ZSCORE key member
获得排名在某个范围的元素列表
ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]
ZRANGE命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)。
ZREVRANGE命令和ZRANGE的唯一不同在于ZREVRANGE命令是按照元素分数从大到小的顺序给出结果的。
获得指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
增加某个元素的分数
Z INCRBY key increment member