未不避免排版错乱,影响阅读体验,部分源码内容通过点击左下角:阅读原文下载。
前⾔:
刚好在整理未授权系列的洞,就学习了⼀波关于redis的,如果哪⾥有讲的不对的地⽅还请各位⼤佬指出.在内⽹中还是很容易碰到未授权的redis或者是弱⼝令的redis,毕竟都这样运维⼈员操作起来⽅便点.
Redis简介:
redis是⼀个key-value存储系统。和Memcached类似,它⽀持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都⽀持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis⽀持各种不同⽅式的排序。与memcached⼀样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写⼊磁盘或者把修改操作写⼊追加的记录⽂件,并且在此基础上实现了master-slave(主从)同步。
Redis常⽤命令:
1 set testkey "Hello World" # 设置键testkey的值为字符串HelloWorld
2 get testkey # 获取键testkey的内容
3 SET score 99 # 设置键score的值为99
4 INCR score # 使用INCR命令将score的值增加1
5 GET score # 获取键score的内容
6 keys * # 列出当前数据库中所有的键
7 get anotherkey # 获取一个不存在的键的值
8 config set dir /home/test # 设置工作目录
9 config set dbfilename redis.rdb # 设置备份文件名
10 config get dir # 检查工作目录是否设置成功
11 config get dbfilename # 检查备份文件名是否设置成功
12 save # 进行一次备份操作
13 flushall 删除所有数据
14 del key 删除键为key的数据
Redis操作总结:
使⽤SET和GET命令,可以完成基本的赋值和取值操作;
2. Redis是不区分命令的⼤⼩写的,set和SET是同⼀个意思;
3. 使⽤keys *可以列出当前数据库中的所有键;
4. 当尝试获取⼀个不存在的键的值时,Redis会返回空,即(nil);
5. 如果键的值中有空格,需要使⽤双引号括起来,如"Hello World";
Redis配置⽂件解读:
在启动Redis服务器进程的时候,可以通过命令⾏参数指定⼀个配置⽂件,这样服务器进程就可以根据配置⽂件中设定的参数值来运⾏了。在redis-3.0.1⽬录下有⼀个redis.conf⽂件,这是⼀个默认的配置⽂件。
redis.conf⽂件中存在许多的设置参数,这⾥重点介绍⼏个和安全相关的参数:
1. port参数
格式为port后⾯接端⼝号,如port 6379,表示Redis服务器将在6379端⼝上进⾏监听来,等待客户端的连接。
2. bind参数
格式为bind后⾯接IP地址,可以同时绑定在多个IP地址上,IP地址之间⽤空格分离,如:bind 192.168.1.100 10.0.0.1,表示同时绑定在192.168.1.100和10.0.0.1两个IP地址上。如果
没有指定bind参数,则绑定在本机的所有IP地址上。
3. save参数
格式为save <秒数> <变化数>,表示在指定的秒数内数据库存在指定的改变数时⾃动进⾏备份(Redis是内存数据库,这⾥的备份就是指把内存中的数据备份到磁盘上)。可以同时指定多个save参数,如:
save 900 1
save 300 10
save 60 10000
表示如果数据库的内容在60秒后产⽣了10000次改变,或者300秒后产⽣了10次改变,或者900秒后产⽣了1次改变,那么⽴即进⾏备份操作。
4. requirepass参数
格式为requirepass后接指定的密码,⽤于指定客户端在连接Redis服务器时所使⽤的密码。Redis默认的密码参数是空的,说明不需要密码即可连接;同时,配置⽂件有⼀条注释了的requirepass foobared命令,如果去掉注释,表示需要使⽤foobared密码才能连接Redis数据库。
5. dir参数
格式为dir后接指定的路径,默认为dir ./,指明Redis的⼯作⽬录为当前⽬录,即redis-server⽂件所在的⽬录。注意,Redis产⽣的备份⽂件将放在这个⽬录下。
6. dbfilename参数
格式为dbfilename后接指定的⽂件名称,⽤于指定Redis备份⽂件的名字,默认为dbfilename dump.rdb,即备份⽂件的名字为dump.rdb。
7. config命令
通过config命令可以读取和设置dir参数以及dbfilename参数,因为这条命令⽐较危险(实验将进⾏详细介绍),所以Redis在配置⽂件中提供了rename-command参数来对其进⾏重命名操作,如rename-command CONFIG HTCMD,可以将CONFIG命令重命名为HTCMD。配置⽂件默认是没有对CONFIG命令进⾏重命名操作的。
详细解读:
Redis5.0.5配置⽂件详解:
https://blog.csdn.net/weixin_42425970/article/details/94132652
利⽤原理:
Redis 提供了2种不同的持久化⽅式,RDB⽅式和AOF⽅式.
· RDB 持久化可以在指定的时间间隔内⽣成数据集的时间点快照
· AOF 持久化记录服务器执⾏的所有写操作命令.
经过查看官⽹⽂档发现AOF⽅式备份数据库的⽂件名默认为appendonly.aof,可以在配置⽂件中通过appendfilename设置其他名称,通过测试发现不能在客户端交互中动态设置appendfilename,所以不能通过AOF⽅式备份写任意⽂件.
· RDB⽅式备份数据库的⽂件名默认为dump.rdb,此⽂件名可以通过客户端交互动态设置dbfilename来更改,造成可以写任意⽂件.
搭建过程:
#下载源码:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
make
#启动redis服务:
cd src
./redis-server
可以指定配置文件启动(若不指定则以默认的配置文件启动):
./redis-server /etc/redis/redis.conf
配置⽂件: