- ❤️ 作者简介:大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生,蓝桥杯国赛二等奖获得者
- 🐟 个人主页 :https://blog.csdn.net/qq_52007481
- ⭐ 个人社区:【小鱼干爱编程】
| 命令 | 作用 |
|---|---|
| keys * | 查看当前库所有key |
| exists key | 判断某个键是否存在 |
| type key | 查看key地数据类型 |
| del key | 删除指定地key |
| unlike key | 根据value选择非阻塞删除 仅将keys从keyspace元数据中删除,真正地删除会在后续异步操作 |
| expire key 10 | 设置key地存活时间,单位秒 |
| ttl key | 查看还有多少秒过期,-1表示用不过期,-2表示已过期 |
| set key value | 添加键值对 |
| 命令 | 作用 |
|---|---|
| select 1 | 切换到数据库1 |
| dbsize | 查看当前数据库地key |
| flushdb | 清空当前库 |
| flushall | 通杀全部库 |
redis一共有16个数据库,默认使用的是0号数据库
String是redis最基本的数据类型,
String类型是二进制安全的,Redis的string可以包含任何数据,如图片。序列化的对象
String 类型是Redis最基本的数据类型,一个Redis中字符value最多可以是512M
set key value 添加键值对
# 清空数据库
flushdb
# 查看数据库中的键
keys *
#添加新数据
set k1 100
set k2 200
set k3 300

get key 取值
get k1
append key value 在原有得值后面追加新的内容
# 在键为text的值的后面添加world
append text world

setnx key value 只有在键不存在的时候可以设置值,能够避免覆盖的情况

incr key 对于整数,会自增1
decr key 对于整数 会减1
对k1自增或者自减

设置自增或自减步长
incrby key increment
decrby key increment
# 设置k1的值自增100
incrby k1 100
mset key1 value1 key2 value2 ... 同时设置多个键值对
mget key1 key2 ... 同时获取多个键值对

同时设置多个数据库中不存在的键值对,如果其中一个键存在,则所有的内容都不会被创建成功
msetnx key1 value1 key2 value2 …

strlen key 获取字符串的长度

getrange key start end 遍历输出
getrange name 0 -1
获取第一个字符第3个字符
getrange name 0 2
setrange key 开始位置 value 用新的值覆盖旧值

setex key 过期时间 value 设置值得同时设置过期时间,单位为秒
# 过期时间20秒 值为v1
setex k5 20 v1
获取旧得值填充新的值
getset key value
getset k1 33

String的数据结构为简单动态字符串(Simple Dynamic String)是可以修改的字符串,内部的实现结构和python中的list类似,都是先预先分配一些空间,当空间不够用会自动扩充空间的大小,最大长度为512M
Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加应给元素到表头或者尾
它的底部实际是个双向链表,对两端的操作性性能很高,通过索引下标的操作中间节点的性能较差。
lpush/rpush key value1 value2 value3 从左边/右边插入一个或者多个值lpop/rpop key 从左边/右边弹出一个值 值在键在,键光键亡rpoplpush key1 key2 从key1列表右边弹出一个值,插入到key2列表的左边lrange key start stop 按照索引下标获得元素(从左到右)代码演示



lindex key index 按照索引下标获得元素
llen key 获取列表的长度
linsert key before value newvalue 在value的前面插入newvalue
在3的前面插入99
linsert k1 before 3 99

在99的后面插入55
linsert k1 after 99 55

lrem key n value 从左边删除n个value(删除重复值)删除k4列表中左面3个2
lpush k4 1 2 2 3 2 1 5 2
lrem k4 3 2
lrange k4 0 -1

lset key index value 将列表key下标为index的值替换成valuelpush k5 1 2 3 4 5
# 将索引为2的值替换成22
lset k5 2 22
# 将索引为3的值替换成44
lset k5 3 44

list的数据结构是快速链表
首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist压缩列表,所有的元素在一块连续的内存空间
元素较多时,才会改成quicklist,
quicklist是将多个ziplist用双向链表的形式链接起来的数据结构
是一个无序不重复的序列,集合成员是唯一的
操作类似于list
底层是一个value为null的hash表,添加,删除,查找的复杂度都是O(1)
sadd key value1 value2 ... 将元素添加到集合key中,如果新添加的元素已经在集合中存在,则会被忽略# 向s1集合中添加元素
sadd s1 1 2 3 4 4 4
smembers key 取出该集合的所有值# 查看s1中的集合
smembers s1

sismember key value 判断集合中是否存在该值 有返回1 没有返回0sadd s2 1 2 3 4 5
sismember s2 2 # 返回1
sismember s2 6 # 返回0
scard key 返回集合的个数scard s2

srem key value1 value2 ... 删除集合中的某些元素sadd s3 1 2 3 4 5 6 7 8
srem s3 3 4 7 # 删除成功
srem s3 3 # 当删除的元素不存在时,返回0,不会报错
spop key [count] 随机弹出一个元素,或者多个元素spop s3 # 随机弹出一个元素
spop s3 2 # 随机弹出2个元素
srandmember key [count] 随机从该集合中取出n个值,不会从集合中删除,默认n为1,当n大于集合的长度时,返回集合中的所有元素srandmember s3 # 随机取出一个值
srandmember s3 2 # 随机取出2个值
smove source destination value 将一个值从一个集合移动到另一个集合sadd s4 1 2 3
sadd s5 6 7 8
# s4中的2移动到s5中
smove s4 s5 2
redis中的集合和数学中的集合一样也有交集并集差集的计算方式
sinter key1 key2 返回两个集合的交集
sunion key1 key2 返回两个集合的并集
sdiff key1 key2 返回两个集合的差集
实例

集合的数据结构dict字典,字典是使用哈希表实现的,所有的的value值都指向同一个外部值
Redis hash 是一个键值对集合,是string类型和field和value的映射表,hash适合存储对象

hset key field value 将哈希表 key 中的字段 field 的值设为 value 。hget key field 获取在哈希表中指定 key 的所有字段和值hmset key field1 value1 field2 value2同时将多个 field-value (域-值)对设置到哈希表 key 中。hmget key field1 field2 获取所有给定字段的值hexists key filed 查看哈希表 key 中,指定的字段是否存在。hkeys key 获取所有哈希表中的字段hvals key 获取哈希表中所有值。hsetnx key field value 只有在字段 field 不存在时,设置哈希表字段的值。hincrby key field increment 为哈希表 key 中的指定字段的整数值加上增量 incrementhincrbyfloat key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment 。hdel key field1 [field2] 删除一个或多个哈希表字段Hash类型对应的数据结构是两种,ziplist(压缩列表),hashtable(哈希表)
field-value长度短且个数较少时,使用的是ziplist,否则使用的是hashtable
有序集合和普通集合非常相似,都是没有重复元素的序列,区别在于,有序集合的每一个元素都关联了一个评分(score) 这个评分被用来按照最低分到最高分的方式排序有序集合中的元素,
注意:集合中的元素是不可重复的,但是评分可以重复
zadd key key score1 value1 score2 value2 ... 将一个或者多个member元素以及score值加入到有序集合中
zrange key start stop 返回有序集合key中下标在start stop之间的元素,添加参数 withscores,连同分数和值返回到结果集
zrangebyscore key min max 返回有序集合中所有score 值介于min 和max之间包括min和max的成员 返回的结果是按score从小到大
zrevrangebyscore key min max 返回有序集合中所有score 值介于min 和max之间包括min和max的成员 返回的结果是按score从大到小
zcard key 获取有序集合的成员数
zcount key min max 计算在有序集合中指定区间分数的成员数
zincrby key increment member 有序集合中对指定成员的分数加上增量 increment
zinterstore destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 destination 中
zlexcount key min max 在有序集合中计算指定字典区间内成员数量
zrank key member 返回有序集合中指定成员的索引
zrem key member [member ...] 移除有序集合中的一个或多个成员
zremrangebyscore key min max 移除有序集合中给定的分数区间的所有成员
zscore key member 返回有序集中,成员的分数值
