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,那么一直阻塞
Redis键值操作详解
本文深入探讨了Redis中键值操作的基本命令与内部编码机制,包括键的查询、删除、过期时间设置、数据类型判断及字符串、哈希、列表等数据结构的详细操作命令。此外,还介绍了各种数据结构的内部编码方式及其对性能的影响。
1049

被折叠的 条评论
为什么被折叠?



