本文详细介绍如何在Redis中设置密码以增强安全性,包括临时和永久设置的方法。同时,探讨了Redis数据库的备份与恢复流程,确保数据安全。最后,通过使用redis-benchmark工具进行性能测试,帮助开发者了解Redis在不同场景下的表现。
redis修改密码
redis安装后,默认密码为空,如果要修改密码
设置验证密码的方式有两种
第一种直接在redis里面设置
[root@localhost ~]# redis-cli
#执行配置命令
127.0.0.1:6379> config set requirepass root
OK
#返回OK后即代表配置成功,这个时候再执行查看密码命令
127.0.0.1:6379> auth root
OK
查看密码:
打开redis-cli.exe文件,输入下面的命令
auth "root" //auth是认证的意思; "root"是redis的密码
config get requirepass //查看redis密码
这种配置方式存在一个很严重的问题,就是当我们将Redis服务器关掉之后,这些配置就会失效,
下次再启动服务器,需要重新设置!
第二种方法:永久有效
打开redis.windows-service.conf配置文件中找到requirepass这个参数,设置参数密码,然后保存配置文件,重启Redis。
本来这种方式非常简单,但是在实际过程中,却遇见了一些问题,那就是配置不生效,
明明配置文件里都已经配置了密码,但是还会报错,后来在Redis启动时发现,Redis报错了:
后来查阅之后才知道,原来Redis启动时需要指定配置文件,否则还会使用默认配置,
而我在Windows里启动.exe应用程序时,还是习惯性的双击应用程序启动,导致Redis一直使用的是默认配置。
这样我们就需要在命令行窗口通过命令行的方式来启动并指定配置文件:
数据库备份和恢复
redis属于内存数据库,速度很快,对于有键值对数据存储需求的是非常便利的。
redis数据库的备份和还原也非常的方便。
1、redis数据库备份(导出)
首先进入redis数据库的控制台。
redis-cli
然后输入备份命令
save
查看一下导出的文件(dump.rdb)
2、redis数据库还原(导入)
首先进入redis数据库的控制台。
redis-cli
然后输入如下命令,获取redis的安装路径
CONFIG GET dir
然后在bin的同级目录下找到var,把备份的数据文件(dump.rdb)复制到var目录下,然后重启redis服务即可。
性能测试
redis做压测可以用自带的redis-benchmark工具
压测命令:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000
压测需要一段时间,因为它需要依次压测多个命令的结果,如:get、set、incr、lpush等等,所以我们需要耐心等待,如果只需要压测某个命令,如:get,那么可以在以上的命令后加一个参数-t(红色部分):
以下实例同时执行50个并发,10000 个请求来检测性能:
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -t get
set请求
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -t set
如果我们只想看最终的结果,可以带上参数-q,完整的命令如下:
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -q
只测试部分数值存取的性能。
redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"
执行netstat -an
命令,查看Redis相关端口是否有很多。如果很多,重启Redis实例释放连接数,然后重新测试即可。
如果使用.\redis-benchmark -h localhost -p 6379 -c 50 -n 10000
会报如下错误:把本机localhost更改为127.0.0.1
实验实训
《学生管理系统》学生信息数据如表6-2-1所示,其中每条数据都是以sno为key的哈希数据。请按以下设计完成数据的导入以及数据操作等任务。
sno | sex | class | name |
202015310301 | Male | 1 | Jim |
202015310302 | Female | 3 | Polo |
202015310303 | Male | 1 | Green |
202015310304 | Male | 2 | Iron |
202015310305 | Female | 1 | Kyo |
202015310306 | Male | 4 | Ryo |
202015310307 | Female | 5 | Lily |
202015310308 | Male | 1 | Lucy |
202015310309 | Female | 2 | Kobe |
2020153103100 | Female | 3 | Oneal |
202015310311 | Female | 2 | Jane |
202015310312 | Male | 1 | Sio |
202015310313 | Male | 5 | Leo |
202015310314 | Female | 4 | Nemo |
202015310315 | Male | 1 | Pac |
202015310316 | Male | 2 | Dime |
202015310317 | Male | 4 | Shady |
202015310318 | Female | 3 | Slim |
202015310319 | Male | 4 | Dre |
202015310320 | Male | 2 | Snoopy |
202015310321 | Male | 1 | Jay |
任务一:非关系型数据库的读写
- 导入学生信息数据到redis;
- 查询字段sno为“202015310312”的sex;
- 新增一条数据,sno为“202015310322”,sex为“Male”,class为“3”,name为“Jone”;
- 创建事务,将学号尾号为“13”,“14”,“16”的class设置为“1”,并查询这些数据的name,运行事务。
任务二:非关系型数据库的备份与恢复
- 备份当前redis数据库的数据至“rdb”;
- 将“rdb”中备份的数据恢复至redis数据库中。