2.1、预备
keys *
(查看所有键)
dbsize
(键总数)
dbsize在计算键总数时不会遍历所有键,而是直接获取redis内置的键总数变量,时间复杂度为O(1),而keys会遍历所有键,时间复杂度为O(n)
exists key [key...]
(检查键是否存在)
如果键存在则返回1,不存在返回0del key [key...]
(删除键)
返回结果为成功删除的个数,如果删除一个不存在的键,就会返回0expire key seconds
(设置键过期时间)ttl key
(返回键的剩余过期时间,3种返回值)
大于等于0的整数:键剩余的过期时间
-1:键没设置过期时间
-2:键不存在
type key
(键的数据结构类型)
type实际返回的就是当前键的数据结构类型,它们分别是string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合),这些只是redis对外的数据结构,每种数据结构都有自己底层的内部编码实现,而且还是多种。object encoding
(查询内部编码)
2.2字符串
1.常用命令
-
set key value [ex seconds] [px milliseconds] [nx|xx]
(设置值)
ex seconds:为键设置秒级过期时间
px milliseconds:为键设置毫秒级过期时间
nx: 键必须不存在,才可以设置成功,用于添加
xx: 键必须存在,才可以设置成功,用于更新(默认)
setex key seconds value 与ex作用一样
setnx key value 与nx作用一样
-
get key
(获取值,不存在返回nil)
-
mset key value [key value ...]
(批量设置值) -
mget key [key ...]
(批量获取值)
-
incr key
(用于对值做自增操作)
值不是整数,返回错误
值是整数,返回自增后的结果
键不存在,按照值为0自增,返回结果为1
-
decr
(自减) -
incrby key increment
(自增指定数字) -
decrby key decrement
(自减指定数字) -
incrbyfloat key increment
(自增浮点数)
2.不常用命令
append key value
(追加值,返回字符串长度)strlen key
(字符串长度)
getset key value
(设置并返回原值)
setrange key offeset value
(设置指定位置的字符)
getrange key start end
(获取部分字符串)
3.内部编码
字符串的内部编码有3种:
int
: 8个字节的长整型embstr
: 小于等于39个字节的字符串raw
:大于39个字节的字符串
2.3哈希
命令:
hset key field value
(设置值)hget key field
(获取值,键或者field不存在,返回nil)hdel key field [field...]
(删除field)hlen key
(计算field个数)
hmset key field value [field value... ]
(批量设置field-value)hmget key field [field ...]
(批量获取field-value)
hexists key field
(判断field是否存在)hkeys key
(获取所有field)hvals key
(获取所有value)hgetall key
(获取所有的 field-value)
hstrlen key field
(计算value的字符串长度)
内部编码:
ziplist
(压缩列表):当哈希元素个数小于hash-max-ziplist-entries配置(默认512个)、同时所有值小于hash-max-ziplist-value配置(默认64字节)时,采用ziplist作为哈希内部实现,节省内存。hashtable
(哈希表)
2.4列表
列表是用来存储多个有序的字符串,列表中的每个字符串称为元素,一个列表最多存储2^32 -1个元素。特点:1、列表是有序的 2、列表中的元素可以是重复的
- 命令
操作类型 | 操作 |
---|---|
添加 | rpush lpush linsert |
查 | lrange lindex llen |
删除 | lpop rpop lrem ltrim |
修改 | lset |
阻塞操作 | blpop brpop |
-
rpush key value [value...]
(从右边插入元素) -
lpush key value [value...]
(从左边插入元素) -
linsert key before|after pivot value
(向某个元素前或后插入元素) -
lrange key start end
(获取指定范围内的元素列表,索引下标从左到右0到N-1,从右到左-1到-N,end包含自身) -
lindex key index
(获取列表指定索引下标的元素) -
llen key
(获取列表长度) -
lpop key
(从列表左侧弹出元素) -
rpop key
(从列表右侧弹出元素) -
lrem key count value
(删除指定元素)- count>0,从左到右,删除最多count个元素
- count<0,从右到左,删除最多count绝对值个元素
- count=0,删除所有
-
ltrim key start end
(按照索引范围修剪列表,保留下标start-end的元素) -
lset key index newvalue
(修改指定索引下标的元素)
-
blpop key [key ...] timeout
-
brpop key [key ...] timeout
(阻塞式弹出)
key[key]:多个列表的键
timeout:阻塞时间(单位: 秒)- 列表为空:如果timeout = 3,那么客户端要等待3秒后返回,如果timeout=0,那么一直阻塞
- 列表不为空:立即返回
- 列表为空:如果timeout = 3,那么客户端要等待3秒后返回,如果timeout=0,那么一直阻塞