redis详解
1.全局命令详解
- keys PATTERN (>= 1.0.0):查看符合条件的键,返回给定模式的 key 列表 (Array) 查看所有键(keys *)(导致数据库暂时被锁住)O(n)
- dbsize (>= 1.0.0):当前数据库的 key 的数量(直接获取Redis内置的键总数变量)O(1)
- exists KEY (>= 1.0.0) :key 存在返回 1 ,否则返回 0
- del key [key ...](>= 1.0.0):被删除 key 的数量
- expire key seconds(>= 1.0.0):设置 key 的过期时间,(单位以秒计)设置成功返回 1,当 key 不存在或者不能为 key 设置过期时间时返回 0
- expireat key time_in_unix_timestamp(>= 1.0.0):设置 key 的在指定时间过期,设置成功返回 1,当 key 不存在或者不能为 key 设置过期时间时返回 0
- ttl key(>= 1.0.0):以秒为单位返回 key 的剩余过期时间(当 key 不存在时,返回 -2 , 当 key 存在但没有设置剩余生存时间时,返回 -1 )
- pttl key(>= 2.6.0):以毫秒为单位返回 key 的剩余过期时间(当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 )
- type key(>= 1.0.0):返回 key 所储存的值的类型(
- none (key不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
- randomkey(>= 1.0.0):从当前数据库中随机返回一个 key (当数据库为空时,返回 nil (windows 系统返回 null))
- rename oldKey newKey(>= 1.0.0):修改 key 的名称 (当 oldKey 和 newKey 相同,或者 oldKey 不存在时,返回一个错误。 当 newKey已经存在时, rename命令将覆盖旧值)
- renamenx oldKey newKey(>= 1.0.0):修改成功时返回 1 。 如果 newKey 已经存在返回 0
- object encoding key(>= 1.0.0):查询内部编码
2.数据结构和内部结构
- string
- int : 8个字节的长整型
- embstr:小于等于39个字节的字符串
- raw: 大于39个字节的字符串
- hash
- ziplist: 使用更加紧凑的结构实现多个元素的连续存储
- 元素个数 < hash-max-ziplist-entries(默认512个)
- 所有值 < hash-max-ziplist-value(默认64个字节)
- hashtable:当无法满足ziplist的条件时,使用hashtable作为哈希的内部实现,读写时间复杂度为O(1)
- list
- ziplist: 使用更加紧凑的结构实现多个元素的连续存储
- 元素个数 < list-max-ziplist-entries(默认512个)
- 所有值 < list-max-ziplist-value(默认64个字节)
- linkedlist:无法满足ziplist的条件时,Redis会使用linkedlist作为列表的内部实现
- set
- intset:减少内存的使用
- 所有元素 == 整数
- 元素个数 < set-max-intset-entries(默认512个)
- hashtable:无法满足intset的条件时,Redis会使用hashtable作为集合的内部实现
- intset:减少内存的使用
- zset
- ziplist:有效减少内存使用
- 元素个数 < zset-max-ziplist-entries(默认128个)
- 元素值 < zset-max-ziplist-value(默认64个字节)
- skiplist:无法满足ziplist的条件时,Redis会使用skiplist作为集合的内部实现,读写效率会下降
3.数据类型
3.1、字符串
- set key value [ex seconds] [px milliseconds] [nx|xx](>= 1.0.0):设置给定 key 的值。如果 key 已经存储其他值,覆写旧值 ·nx:键必须不存在 xx:键必须存在
- setnx key value (>= 1.0.0):在指定的 key 不存在时,为 key 设置指定的值 成功返回 1 ;失败返回 0
- setex key timeout value(>= 2.0.0): key 设置值及其过期时间
- mset key value [key value ...](>= 1.0.1):同时设置一个或多个 key-value 对
- get key(>= 1.0.0):获取指定 key 的值。如果 key 不存在,返回 nil
- mget key [key ...](>= 1.0.0):返回所有(一个或多个)给定 key 的值