Redis初探------1.相关命令

10 篇文章 0 订阅

你未必出类拔萃,但一定与众不同

接入以前的redis数据类型

redis

1.切换数据库

每个redis都有 自己的目标数据库 通过select index 来进行切换数据库

默认情况下 redis客户端的目标数据库为 0 号数据库

以下为 在0号数据库设置键值,到达2号数据库 1号数据库读取的例子

127.0.0.1:6379> SET msg "hello world"
OK
127.0.0.1:6379> get msg
"hello world"
127.0.0.1:6379>  select 2
OK
127.0.0.1:6379[2]> get msg
(nil)
127.0.0.1:6379[2]> set msg "two hello world"
OK
127.0.0.1:6379[2]> get msg
"two hello world"
127.0.0.1:6379[2]> select 1
OK
127.0.0.1:6379[1]> get msg
(nil)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> msg
(error) ERR unknown command 'msg'
127.0.0.1:6379> get msg
"hello world"

而在服务器内部 客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是一个指向redisDb结构的指针。

redisClient.db 指针指向redisServer.db数组的其中一个元素,而被指向的元素就是客户端的目标数据库

2.数据库键空间

键空间和用户所见的数据都是对应的

键空间的键就是数据库的键,每个键都是一个字符串对象

健空间的值就是数据库的值,每个值都都可以是字符串对象,也可以是列表对象 哈希表对象 集合对象 有序集合对象中的任何一种对象

3.添加新键 获取键值

通过set添加新键

get得到键对应的值

127.0.0.1:6379> set todayDate "20210416"
OK
127.0.0.1:6379> get todayDate
"20210416"
127.0.0.1:6379>
4.删除键

del todayDate

127.0.0.1:6379> del todayDate
(integer) 1
127.0.0.1:6379> get todayDate
(nil)
5.更新键

set todayDate “20210416 16:00:00”

127.0.0.1:6379> get todayDate
"20210416"
127.0.0.1:6379> set todayDate "20210416 16:00:00"
OK
127.0.0.1:6379> get todayDate
"20210416 16:00:00"
127.0.0.1:6379>
6.获取数据库键数量

dbsize

127.0.0.1:6379> dbsize
(integer) 5
7.设置过期时间总共四种

expire 设置过期时间为ttl秒

pexpire 设置过期时间为ttl毫秒

expireat 设置过期时间为时间戳

pexpireat 设置过期时间毫秒时间戳

expire 或者 pexpire

127.0.0.1:6379> expire todayDate 10
(integer) 1
127.0.0.1:6379> get todayDate
"20210416 16:00:00"
127.0.0.1:6379> get todayDate
(nil)
127.0.0.1:6379>
8.查看剩余过期时间

ttl 秒 pttl 毫秒

127.0.0.1:6379> set todayDate "20210416 16:20:00"
OK
127.0.0.1:6379> expire todayDate 1000
(integer) 1
127.0.0.1:6379> ttl todayDate
(integer) 987
127.0.0.1:6379> pttl todayDate
(integer) 976268
9.移除过期时间

persist

127.0.0.1:6379> ttl todayDate
(integer) 739
127.0.0.1:6379> persist todayDate
(integer) 1
127.0.0.1:6379> ttl todayDate
(integer) -1

过期键删除策略(1,3为主动删除策略,2为被动删除)

1.定时删除

在设置键的过期时间的同时 创建一个定时器 让定时器在键的过期时间来临时,立即执行对键的删除操作

优点:定时删除策略对内存是最友好的,通过使用定时器 定时删除策略可以保证过期键会尽可能快的被删除,并且释放过期键所占的内存

缺点: 对cpu的时间不友好,过期键过多 删除过期键可能占用过多的cpu时间。

2.惰性删除

放任键过期不管,但是每次从键空间取值的时候。都检查是否键过期,过期就删除键,没有过期就返回键

优点:对cpu时间来说最友好,取键的时候才会对键进行过期检查,并且删除目标只限于当前的键,对其他的键不会产生影响

缺点 :对内存不友好,一个键已经过期,而这个键还保存在数据库中,只要过期键不被删除 那么占用的内存就不会释放

3.定期删除

每隔一段时间,对数据库进行一次检查 删除其中的过期键

定期删除是1,2 的整合和折中

这个策略的难点是 确定删除操作执行的时长和频率

删除操作过于频繁 或者执行时间过长 就会退化为定时删除

操作执行较少,执行时间太短,又会变成惰性删除

因此必须根据使用场景以及服务器的情况 进行定义删除执行的时长和频率

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼爱吃柚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值