缓存加速技术通过减少对原始数据源的访问次数来提高性能,主要应用于减少网络延迟、提高数据访问速度、减轻服务器负载等方面。不同类型的缓存技术包括内存缓存、磁盘缓存、网络缓存等,各自适用于不同的应用场景和需求。以下是对缓存加速技术的详细探讨:
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install gcc* zlib-devel
[root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
[root@localhost ~]# cd redis-4.0.9/
[root@localhost redis-4.0.9]# make
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/
[root@localhost utils]# ./install_server.sh
备注:
[root@localhost utils]# netstat -anpt | grep redis
[root@localhost ~]#/etc/init.d/redis_6379 stop
[root@localhost ~]#/etc/init.d/redis_6379 start
[root@localhost ~]#/etc/init.d/redis_6379 restart
[root@localhost ~]#/etc/init.d/redis_6379 status
[root@localhost ~]#vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.101 //监听的主机地址
port 6379 //端口
daemonize yes //启用守护进程
pidfile /var/run/redis_6379.pid //指定 PID 文件
loglevel notice //日志级别
logfile /var/log/redis_6379.log //指定日志文件
[root@localhost~]#/etc/init.d/redis_6379 restart
[root@localhost utils]# netstat -anpt | grep redis
(1)连接本机redis
[root@localhost ~]# redis-cli
127.0.0.1:6379>
(2)测试redis服务是否启动
127.0.0.1:6379> ping
PONG
(3)远程连接
[root@localhost ~]#redis-cli -h 192.168.10.101 -p 6379
备注:
(1)查看所有与 List 数据类型的相关命令
127.0.0.1:6379>help @list
(2)查看 set 命令的命令帮助
127.0.0.1:6379>help set
redis-benchmark 测试工具
redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能
(1)测试请求性能
[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000
备注:
-h:指定服务器主机名;
-p:指定服务器端口;
-c:指定并发连接数;
-n:指定请求数;
向 IP 地址为 192.168.10.101、端口为6379 的 Redis 服务器发送 100 个并发连接与100000 个请求测试性能
(2)测试存取性能
[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100
备注:
(3)set 与 lpush 操作性能
[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q
备注:
-n:指定请求数;
-q:强制退出 redis。仅显示 query/sec 值;
-t:仅运行以逗号分隔的测试命令列表;
SET: 121951.22 requests per second
LPUSH: 127226.46 requests per second
备注:
测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能。
Lpush 命令将一个或多个值插入到列表头部
set:存放数据,基本的命令格式为 set key value。
get:获取数据,基本的命令格式为 get key。
set teacher zhanglong
get teacher
在 Redis 数据库中,与 key 相关的命令主要包含以下几种。
(1)添加键值对
使用 keys 命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。
127.0.0.1:6379>**set k1 1**
OK
127.0.0.1:6379>**set k2 2**
OK
127.0.0.1:6379>**set k3 3**
OK
127.0.0.1:6379>**set v1 4**
OK
127.0.0.1:6379>**set v5 5**
OK
(2)查看当前数据库中所有键
127.0.0.1:6379>**KEYS \***
1) "teacher"
2) "k1"
3) "k2"
4) "k3"
5) "v1"
6) "v5"
127.0.0.1:6379>**set v22 5**
OK
(3)查看当前数据库中以 v 开头的数据
127.0.0.1:6379>**KEYS v\***
1) "v1"
2) "v5"
3) "v22"
(4)查看当前数据库中以 v 开头后面包含任意一位的数据
127.0.0.1:6379>**KEYS v?**
1) "v1"
2) "v5"
(5)查看当前数据库中以 v 开头 v 开头后面包含任意两位的数据
127.0.0.1:6379>**KEYS v??**
1) "v22"
exists 命令可以判断键值是否存在
127.0.0.1:6379>**exists teacher**
(integer) 1
结果为1,表示 teacher 键是存在
127.0.0.1:6379>**exists tea**
(integer) 0
结果为0,表示 tea 键不存在
del 命令可以删除当前数据库的指定 key
127.0.0.1:6379>**keys \***
1) "teacher"
2) "v1"
3) "v22"
4) "k3"
5) "k1"
6) "k2"
7) "v5"
127.0.0.1:6379> **del v5**
(integer) 1
127.0.0.1:6379>**get v5**
(nil)
使用 type 命令可以获取 key 对应的 value 值类型
127.0.0.1:6379>**type k1**
string
备注:
redis支持的数据类型
rename 命令是对已有 key 进行重命名
在实际使用过程中,建议先用 exists 命令查看目标 key 是否存在,然后再决定是否执行 rename 命令,以避免覆盖重要数据
127.0.0.1:6379>keys v*
1) "v1"
2) "v22"
127.0.0.1:6379>rename v22 v2
OK
127.0.0.1:6379>keys v*
1) "v1"
2) "v2"
127.0.0.1:6379>get v1
"4"
127.0.0.1:6379>get v2
"5"
127.0.0.1:6379>rename v1 v2
OK
127.0.0.1:6379>get v1
(nil)
127.0.0.1:6379>get v2
"4"
renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在。
使用renamenx 命令进行重命名时,如果目标 key 存在则不进行重命名。
127.0.0.1:6379>keys *
1) "teacher"
2) "k3"
3) "k1"
4) "k2"
5) "v2"
127.0.0.1:6379>get teacher
"zhanglong"
127.0.0.1:6379>get v2
"4"
127.0.0.1:6379>renamenx v2 teacher
(integer) 0
127.0.0.1:6379>keys *
1) "teacher"
2) "k3"
3) "k1"
4) "k2"
5) "v2"
127.0.0.1:6379>get teacher
"zhanglong"
127.0.0.1:6379>get v2
"4
dbsize 命令的作用是查看当前数据库中 key 的数目。
127.0.0.1:6379> dbsize
(integer) 5
Redis 在没有任何改动的情况下默认包含 16 个数据库,数据库名称是用数字 0-15 来依次命名的
(1)切换至序号为 10 的数据库
127.0.0.1:6379>**select 10**
OK
(2)切换至序号为 15 的数据库
127.0.0.1:6379[10]>**select 15**
OK
(3)切换至序号为 0 的数据库
127.0.0.1:6379[15]>**select 0**
Redis 的多数据库在一定程度上是相对独立的,例如在数据库 0 上面存放 k1 的数据,在其它 1-15 的数据库上是无法查看到的。
127.0.0.1:6379>**set k1 100**
OK
127.0.0.1:6379>**get k1**
"100"
127.0.0.1:6379>**select 1**
OK
127.0.0.1:6379[1]>**get k1**
(nil)
127.0.0.1:6379[1]>**select 0** //切换至目标数据库 0
OK
127.0.0.1:6379>**get k1** //查看目标数据是否存在
"100"
127.0.0.1:6379>**move k1 1** //将数据库 0 中 k1 移动到数据库 1 中
(integer) 1
127.0.0.1:6379>**select 1** //切换至目标数据库 1
OK
127.0.0.1:6379[1]>**get k1** //查看被移动数据
"100"
127.0.0.1:6379[1]> **select 0**
OK
127.0.0.1:6379> **get k1** //在数据库 0 中无法查看到 k1 的值
(nil)
清空当前数据库数据,使用 FLUSHDB
命令实现;清空所有数据库的数据,使用 FLUSHALL 命令实现
持久化概述
持久化分类
两者选择标准
优缺点
AOF持久化
性能管理
查看内存信息
info memory
used_memory:1210776 #已经内存使用的大小,以字节为单位
used_memory_human:1.15M # 带单位展示,以M为单位
used_memory_rss:7802880 # 从操作系统角度看redis内存占用多少
used_memory_rss_human:7.44M # 带单位展示
maxmemory:1073741824 # 最大内存大小
maxmemory_human:1.00G # 带单位展示
回收策略
maxmemory-policy:回收策略
volatile-lru:它允许 Redis 从整个数据集中挑选最近最少使用的 key 进行删除
volatile-ttl:按照key的过期时间进行淘汰
volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰;
allkeys-lru:使用 LRU 算法从所有数据集合中淘汰数据;
allkeys-random:从数据集合中任意选择数据淘汰;
noeviction:禁止淘汰数据(默认值)
设置方法
方法一:通过配置文件redis.conf设置密码

方法二:通过命名设置密码
使用redis-cli连接上Redis,执行如下命令
config set requirepass 123456
执行完毕,无需重启,退出客户端,重新登录即可
连接方法
连接时输入密码
redis-cli -a 123456
先连接再输入密码
redis-cli 127.0.0.1:6379>auth 123456
关闭方法
redis-cli -a 123456 shutdown
区别