redis的数据存储在哪里
Redis中是把数据保存到内存中的,但是它也会定期的把数据写会到硬盘中。
Redis保存数据有两种方式:
快照模式(Snapshot)
它支持两种快照模式:
定时快照,即按一定时间将内存中的数据保存到磁盘上。
定量快照,即数据变化一定次数后将数据保存到磁盘上。
你也可以结合这两种方式,比如变化1000次,距离上次保存时间60秒以上才保存数据。
写模式(Append Only File)
这种模式下Redis会把所以修改数据的命令(如Update,Set)等保存到一个只能追加的ASAP文件中,当Redis重启时,它会把这个文件里的命令重新执行一遍。
数据保存到哪里?
数据是保存到一个数据文件中的,具体文件名要看Redis的配置文件,即Redis.conf
config get dbfilename (返回 dump.rdb)
可以使用 config set dbfilename new (修改你要保存数据的文件)
数据如何到导出?
Redis写数据时先写到一个temp文件中,然后再把temp文件重命名为预定义的文件,所以即使Redis在运行,也可以直接用cp命令拷贝这个文件。
cp /usr/loca/redis/demo.rdb /home/greenerycn/db/demo.rdb
数据如何恢复?
关闭Redis后直接覆盖掉demo.rdb,然后重启即可。
查看redis的快照文件dump.rdb
redis有两种持久化方式,Rdb 和 Aof
RDB方式是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际的操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储(binlog)。存储的文件为:dum.rdb。然而dum.rdb使用vim打开,是一种乱码,无法会意。
ebe4ba9f3e8c3a804702057fa5aaf4b.png
所以才需要rdbtools帮助转换。
在哪里找到dum.rdb?
配置rdb目录中寻找:aof和rdb.dum都在这里
1530188743(1).png
我起初安装redis,并未执行instal_server.sh。
21480a000cc617f789fbbab40354cf3.png
6a4b5a31f7ed9b9c46020c00a1e5051.png
如何安装rdbtools?
https://github.com/sripathikrishnan/redis-rdb-tools
这里介绍了两种安装方式,我使用下面这种
pip install rdbtools python-lzf
使用的前提是要安装python, 不然pip命令不识别。
如何安装python?
https://blog.csdn.net/li_adou/article/details/78377265
我的软件都是下载到soft目录,安装到module目录。所以在soft目录执行下载命令
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
然后解压到module目录。
dfe720381e25df82412ba96a9f8d199.png
我在当前目录下创建文件夹python3用来作为安装路径
编译:
./configure --prefix=/opt/module/Python-3.6.0/python3
安装:
make && make install
创建新版本的软连接:
在 /usr/bin/目录下,有一个python,这个python要使用我们刚安装的python.
mv /usr/bin/python /usr/bin/python_bak
ln -s /opt/module/Python-3.6.0/python3 /usr/bin/python
配置环境变量:vim /erc/profile
c907e5ae1df07b855d95becb996b66d.png
使其生效
source profile
使用pip命令时,仍不识别,需要使用pip3.
于是使用pip3安装rdbtools
pip3 install rdbtools python-lzf
安装时报了一个错误:
a0561acf5ff00a0ec687dbc8cb069ab.png
按着提示执行升级命令,升级好后,使用pip命令进行安装。
pip install rdbtools python-lzf
安装好rdbtools后,我在/opt/module/redis-4.0.2/redis/6379目录下执行,得到可memory.csv文件。
rdb -c memory dump.rdb > memory.csv
cc701d8e2f4ae2c0a3f21fb1f41aea1.png
其中:size_in_bytes 内存的大小,由此可以查询内存最高的key
num_elements 成员个数
接下来便可以通过sql来处理了。
作者:靳艳杰
链接:https://www.jianshu.com/p/366340593e40
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
https://github.com/sasanrose/phpredmin
https://github.com/void9main/SeeRedis