Redis学习笔记-----Redis的其他特性

前言

在了解了Redis的发布订阅以及事务的相关知识后,我们今天来了解一下他的其他特性--------多数据库,数据淘汰策略和脚本。

一. Redis的数据库

Redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接数据库0。
这是我们刚进入的客户端(在127.0.0.1:6379后面没有标数字表明数据库为0)

Redis学习笔记-----Redis的其他特性_第1张图片

1.redis配置文件中使用下面的参数来控制数据库总数(我们可以修改其大小):
 database 16  //(从0开始1 2 3 ....15)

Redis学习笔记-----Redis的其他特性_第2张图片

2.相关的命令

select 数据库 // 数据库的切换
Redis学习笔记-----Redis的其他特性_第3张图片

移动数据(将当前key移动到另外一个库中)

move key 名称 数据库
Redis学习笔记-----Redis的其他特性_第4张图片

数据库清空:

flushdb //清空当前数据库的所有key
flushall //清空整个Redis的数据库所有的key
Redis学习笔记-----Redis的其他特性_第5张图片

二. Redis的数据淘汰策略

1.Redis官方给的警告,当内存不足时,Redis会根据配置的缓存策略淘汰部分Keys,以保证写入成功。当无淘汰策略时或没有找到适合淘汰的Key时,Redis直接返回 out of memory 错误。
2.最大缓存的设置(在redis.conf下进行修改,搜寻 /maxmemory即可找到相关配置)
在redis中,运行用户使用和使用的最大内存大小为521G
3.Redis提供了6中数据淘汰策略

volatile-lru: 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-lfu: 从已设置过期时的Keys中,删除一段时间内使用次数最少的
volatile-ttl: 从已设置过期时间的数据集中挑选最近将要过期的数据淘汰
volatile-random: 从已设置过期时间的数据集中随机选择数据淘汰
allkeys-lru: 从数据集中挑选最近最少使用的数据淘汰
allkeys-lfu: 从所有keys中,删除一段时间内使用次数最少的
allkeys-random: 从数据集中随机选择数据淘汰
no-enviction(驱逐): 禁止驱逐数据(不采用任何淘汰策略,默认配置),针对写操作,返回错误信息  

建议:了解了Redis的淘汰策略之后,在平时使用时应尽量主动设置/更新key的expire时间,主动删除不活跃的旧数据,有助于提升查询性能。

三.Redis脚本

1.Redis脚本使用Lua解释器来执行脚本。Redis 2.6 版本通过内嵌支持 Lua环境。执行脚本常用命令为EVAL

2.Redis脚本命令

EVAL script numkeys key [key ...] arg [arg ...]        #执行 Lua 脚本
EVALSHA sha1 numkeys key [key ...] arg [arg ...]       #执行 Lua 脚本
SCRIPT EXISTS script [script ...]                      #查看指定的脚本是否已经被保存在缓存当中
SCRIPT FLUSH                                           #从脚本缓存中移除所有脚本
SCRIPT KILL                                            #杀死当前正在运行的 Lua 脚本
SCRIPT LOAD script                                    #将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本

实例
以下实例演示了 redis 脚本工作过程:

127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"

你可能感兴趣的:(Redis)