数值操作
- incrby key 步长 将key增加指定步长
- decrby key 步长 将key减少指定步长
- incr key : +1操作
- decr key: -1操作
- incrbyfloat key step
例子:
set number 50 (此时number是字符串)
incrby number (2-任意) (增加任意值 且将number变为integer)
对字符串加过期时间有两套方案
方案1: (字符串独有) 直接用set的ex参数
set key value ex 3
or
setex key 3 value (一样的)
方案2: (通用的) 使用expire通用命令
1、 set key value
2、 expire key 5 # 秒
3、 pexpire key 5 # 毫秒
检查过期时间
- ttl key (查看过期时间)
-1: 代表当前key没有过期时间
>0: 代表当前key的剩余存活时间
-2: 代表当前key不存在(两种情况 1:key自始至终不存在 2:key因为过期被销毁 了)
- persist key (删除过期时间变为普通变量) 对应的 expire key time 加上过期时间
说明: 就是将key变为永不过期
返回值: 1 代表成功 / 0 代表当前key没有过期时间 或者key不存在
Redis单线程删除过期数据的机制
1、 惰性删除
不会去时时刻刻检测数据是否过期, 只有当用户get该数据的时候才会判断是否过期 过期则返回null且删掉数据
2、 定期删除
源码大致意思就算每100毫秒就调用一个方法 该方法扫描16个数据库,随机抽取20个数据 如果删掉的数据大于总数据的1/4 或者第一个数据就删除了 那就继续循环该方法, 但是一旦超过25毫秒强制退出 等待下一个100毫秒
3、maxmemory
最后一道保险, 一旦内存量超过 最大限制, redis会执行命令时触发 内存淘汰
主流淘汰机制如下:
volatile-lru: 从已设置过期时间的内存数据集中挑选最近最少使用的数据 淘汰;
volatile-ttl: 从以设置过期时间的内存数据集中挑选即将过期的数据 淘汰;
volatile-random: 从已设在过期时间的内存数据集中任意挑选数据 淘汰;
allkeys-lru: 从内存数据集中挑选最近最少使用的数据淘汰;
allkeys-random: 从数据集中任意挑选数据 淘汰;
no-enviction: 禁入大多写命令
数据类型-列表
- 基础概念
1、元素是字符串类型
2、列表头尾增删快, 中间增删慢, 增删元素是常态
3、元素可重复
4、最多可包含2^32 -1 个元素
5、索引同python列表
列表常用命令- 增加数据
1、 LPUSH key value1 value2 (会直接初始化一个列表)
说明: 从列表头部压入元素
返回: list最新的长度
2、 RPUSH key value1 value2
说明: 从列表尾部压入元素
返回: list最新的长度
3、 RPOPLPUSH src dst
说明: 从列表src尾部弹出1个元素, 压入到列表dst的头部
返回: 被弹出的元素
4、LINSERT key after|before value newvalue
说明:在列表 指定元素后面/前面插入元素
such as: linsert l2 after e f ( 在 列表l2 的元素e 后面 插入 f)
…
返回:
————1、如果命令执行成功, 返回列表的长度
————2、如果没有找到 元素 , 返回 -1
————3、如果 key不存在或着为空列表, 返回 0
5、 查看列表中元素
LRANGE key start stop
6、获取列表长度
LLEN key
列表常用命令- 删除
7、从列表头部弹出1个元素
LPOP key
8、 从列表尾部弹出1个元素
RPOP key
9、 列表头部, 阻塞弹出, 列表为空 或者不存在 时阻塞
BLPOP key timeout (timeout写时间 即阻塞时间)
10、 列表尾部, 阻塞弹出,列表为空 或者不存在 时阻塞
BRPOP key timeout
如果超时时间设置为0, 就是永久阻塞, 直到有数据可以弹出
11、 LREM key count value
说明:删除指定元素
————count > 0: 表示从头部开始向表尾搜索, 移除与value相等的元素, 数量为count
————count < 0: 表示从尾部开始向表头搜索, 移除与value相等的元素, 数量为-count
————count = 0: 移除表中所有与value相等的值
. .
返回:被移除元素的数量
12、 LTRIM key start stop
说明: 保留指定范围内的元素
返回: ok
场景:
保存微博评论最后500条
LTRIM weibo:comments 0 499
列表常用命令- 更新
13、 LSET key index newvalue
说明: 设置list指定索引的值