Redis

核心概念

键值对内存数据库

key

相关命令

命令简述
DEL key删除
DUMP key序列化
EXISTS key是否存在
EXPIRE key seconds设置seconds秒后key删除
EXPIREAT key timestamp到时间戳删除key
PEXPIRE key milliseconds设置 key 的过期时间以毫秒计
PEXPIREAT key milliseconds-timestamp到毫秒时间戳删除key
KEYS pattern查找key,可以使用*通配符
MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中。
PERSIST key移除 key 的过期时间,key 将持久保持。
PTTL keykey剩余过期毫秒
TTL keykey剩余过期秒
RANDOMKEY从当前数据库中随机返回一个 key 。
RENAME key newkey重命名
SCAN cursor [MATCH pattern] [COUNT count]迭代键
TYPE key返回key类型

数据类型

string, hash, list, set, zset

string

存取

SET test_key "test_val"
GET test_key

api 参考

  • SET key value 设置 kv
  • GET key 获取k
  • GETRANGE key start end 获取key中子串
  • GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
  • GETBIT KEY_NAME OFFSET 字符串值指定偏移量上的位(bit)
  • MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。
  • SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
  • SETEX key seconds value 设置带过期时间的key
  • SETNX key value 只有在 key 不存在时设置 key 的值。
  • SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。、
  • STRLEN key 长度
  • MSET key value [key value ...] 同时设置一个或多个 key-value 对
  • PSETEX key milliseconds value 这但它以毫秒为单位设置 key 的生存时间
  • INCR key 存储的数字+1
  • INCRBY key increment 存储值+指定值
  • INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。
  • DECR key 存储的数字-1
  • DECRBY key decrement 存储的数字-decrement
  • APPEND key value 末尾添加

菜鸟Redis教程open in new window

hash

键值对集合

HSET test_hash key1 val1
HGET test_hash key1

HSET可以设置多个键值对。

  • HSET test_hash key1 val1 将哈希表 key 中的字段 field 的值设为 value
  • MSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。
  • HGET key field 获取存储在哈希表中指定字段的值
  • HMGET key field1 [field2] 获取所有给定字段的值
  • HGETALL key 获取在哈希表中指定 key 的所有字段和值
  • HDEL key field1 [field2] 删除一个或多个哈希表字段
  • HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
  • HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
  • HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment
  • HKEYS key 获取所有哈希表中的字段
  • HVALS key 获取哈希表中所有值。
  • HLEN key 获取哈希表中字段的数量
  • HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对

list

列表 可以左插或右插 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

lpush test_list k1
rpush test_list k2
lrange test_list 0 10

lrange获取

  • LPUSH key value1 [value2] 将一个或多个值插入到列表头部
  • RPUSH key value1 [value2] 将一个或多个值插入到列表尾部
  • LPUSHX key value 将一个或多个值插入到已存在的列表头部
  • RPUSHX key value 为已存在的列表添加值
  • LRANGE key start stop 获取指定范围元素 可以使用负值 -1代表最后一个元素
  • LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素
  • LLEN key 列表长度
  • LPOP key 移出并获取列表的第一个元素
  • RPOP key 移出并获取列表的第一个元素
  • LREM key count value 移除列表元素 count = 0 为所有,其他情况为绝对值
  • LINDEX key index 通过索引获取列表中的元素
  • LSET key index value 通过索引设置值
  • LTRIM key start stop 保留指定区间元素
  • BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • BRPOP key1 [key2 ] timeout 弹出最后一个元素 同上
  • BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

set

set 是 不含重复元素的无序集合,通过哈希实现。 复杂度为O(1) 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

sadd test_set key1 val1
smembers test_set
  • SADD key member1 [member2] 向set添加元素
  • SMEMBERS key 返回set所有元素
  • SREM key member1 [member2] 移除集合中一个或多个成员
  • SCRAD key 获取元素数量
  • SDIFFSTORE destination key1 [key2] 获取set的差集并存储到destination
  • SINTER key1 [key2] 返回给定所有集合的交集
  • SUNION key1 [key2] 返回所有给定集合的并集
  • SINTERSTORE destination key1 [key2] 给定集合的交集存储到destination
  • SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
  • SISMEMBER key member 判断member是否是key的成员
  • SPOP key 移除并返回集合中的一个随机元素
  • SRANDMEMBER key [count] 随机返回集合中 一个或多个
  • SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
  • SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素

### zset

有排序的zset,每个元素关联一个double类型的分数

zadd test_zset 100 key1
zadd test_zset 90 key2
ZRANGEBYSCORE test_zset 0 100
  • ZADD key score1 member1 [score2 member2] 向zset添加元素 或替换已有元素的分数
  • ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
  • ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员
  • ZCARD key 获取有序集合的成员数
  • ZCOUNT key min max 计算在有序集合中指定区间分数的成员数
  • ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 incremen
  • ZRANK key member 返回有序集合中指定成员的索引
  • ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
  • ZREM key member [member ...] 移除有序集合中的一个或多个成员
  • ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
  • ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员 下标
  • ZREMRANGEBYSCORE key min max 根据分数移除
  • ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到低
  • ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序
  • ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
  • ZSCORE key member 返回有序集中,成员的分数值
  • ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
  • ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
  • ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)

HyperLogLog

不精确的SET

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素

序号 命令及描述 1 PFADD key element [element ...] 添加指定元素到 HyperLogLog 中。 2 PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值。 3 PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog

Last Updated:
Contributors: himcs, himcs