当前位置:Gxlcms > 数据库问题 > Redis 非关系型数据库 ( Nosql )

Redis 非关系型数据库 ( Nosql )

时间:2021-07-01 10:21:17 帮助过:3人阅读

zxf redis-2.6.10.tar.gz shell > cd redis-2.6.10; make; make install

二、调整 Redis

shell > mkdir /usr/local/redis
shell > cd !$
shell > cp ../src/redis-2.6.10/redis.conf .
shell > cp ../src/redis-2.6.10/src/redis-cli .
shell > cp ../src/redis-2.6.10/src/redis-server .
shell > cp ../src/redis-2.6.10/src/redis-sentinel .
shell > cp ../src/redis-2.6.10/src/redis-benchmark .
shell > cp ../src/redis-2.6.10/src/redis-check-aof .
shell > cp ../src/redis-2.6.10/src/redis-check-dump .

## redis.conf  主配置文件
## redis-cli     命令行操作工具
## redis-server    启动程序
## redis-sentinel  集群管理工具
## redis-benchmark   性能测试工具,测试 redis 在当前系统配置下的读写性能
## redis-check-aof     更新日志检查,--fix 可以修复 log 文件
## redis-check-dump 检查本地数据文件

三、编辑 redis.conf

shell > mv redis.conf redis.conf.bak

shell > vim redis.conf
daemonize yes # 以守护进程方式启动 pidfile
/usr/local/redis/logs/redis.pid # 定义 pid 文件存放路径 port 6379 # 监听端口 timeout 300 # 请求超时时间 loglevel debug # 定义日志级别 logfile /usr/local/redis/logs/redis.log # 定义日志文件路径 databases 16 # 启动数据库实例数,默认连接的数据库为 0 ,可以通过 select N 来连接不同的数据库
# 从内存保存数据到磁盘的策略:
save 900 1 # 当有 1 条 keys 数据改变时,900 秒刷新到磁盘一次
save 300 10 # 当有 10 条 keys 数据改变时,300 秒刷新到磁盘一次
save 60 10000 # 当有 1W 条 keys 数据改变时,60 秒刷新到磁盘一次
rdbcompression yes # dump .rdb 数据库时,是否压缩数据对象
dbfilename dump.rdb # dump 数据库时,数据库保存的文件名
dir /usr/local/redis/data/ # dump 时数据库保存的路径
#-----------------------------------------------------------------------------------------------------
appendonly no                              # 是否开启日志功能,如果开启每次操作都会记录一条日志,相当于 mysql 的 binlog ,但是会影响效率
#appendfilename appendonly.aof             # AOF 文件名称,默认为 ppendonly.aof
#appendfsync everysec                      # 同步数据到磁盘的规则:
                                           #1、 no 不主动写入磁盘,依赖与系统的写入,一般 30 秒左右写入一次,性能最好,但是持久化没有保证。
                                           #2、 everysec 每秒强制写入磁盘一次,在性能跟持久化方面折中,推荐使用。
                                           #3、 always 每次收到写操作就立即强制写入磁盘,是最有保证的完全持久化,但是速度慢。
#no-appendfsync-on-rewrite yes             # 在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成磁盘 IO 上的冲突
#auto-aof-rewrite-percentage 100           # 当前 AOF 文件的大小是上次日志重写得到的 AOF 文件大小的两倍时,自动启动新的日志重写过程
#auto-aof-rewrite-min-size 64mb            # 当前 AOF 文件启动新的日志重写过程的最小值,避免刚启动 redis 时由于文件较小导致频繁重写
#-----------------------------------------------------------------------------------------------------

## 设置在向客户端应答时,是否把较小的包合并为一个包发送

四、启动 Redis

shell > echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

shell > sysctl vm.overcommit_memory=1

## 调整内核参数,如果不调整 redis 会报一个警告信息

shell > mkdir /usr/local/redis/data # 创建 data 目录

shell > mkdir /usr/local/redis/logs # 创建 logs 目录

shell > redis-server /usr/local/redis/redis.conf # 启动 redis ,需要指定配置文件路径

shell > netstat -anpt | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1176/redis-server

五、测试 Redis

-----------------------------------------------------------------------------------------------------

shell > redis-cli
redis 127.0.0.1:6379> set password 123
OK
redis 127.0.0.1:6379> get password
"123"
redis 127.0.0.1:6379> quit

## 登陆本机的 redis ,写入 keys/value ,读取 keys

shell > ls /usr/local/redis/data/

## 没有生成 dump.rdb ,因为半持久化的 save 规则没有触发

shell > redis-cli shutdown
shell > ls /usr/local/redis/data/
dump.rdb

## 当关闭 redis 的时候,会将内存中的数据保存为 dump.rdb

shell > redis-server /usr/local/redis/redis.conf
shell > redis-cli
redis 127.0.0.1:6379> get password
"123"
redis 127.0.0.1:6379> quit

## redis 启动后从 dump.rdb 文件中读取数据,所以数据依然存在

-----------------------------------------------------------------------------------------------------

shell > rm -rf /usr/local/redis/data/*

shell > redis-cli
redis 127.0.0.1:6379> set password abcdef
OK
redis 127.0.0.1:6379> get password
"abcdef"
redis 127.0.0.1:6379> quit

shell > kill -9 `cat /usr/local/redis/logs/redis.pid`

## 当不是正常关闭 redis 时,如 kill -9 、redis 服务器突然宕机等

shell > ls /usr/local/redis/data/

## 是不会将内存中的数据同步到磁盘的,也就是说不会生成 dump.rdb 文件

shell > redis-server /usr/local/redis/redis.conf

shell > redis-cli
redis 127.0.0.1:6379> get password
(nil)
redis 127.0.0.1:6379> quit

## 这时启动 redis ,发现数据丢失了 。如果不能忍受这种丢失可以启动 AOF 全持久化。

-----------------------------------------------------------------------------------------------------

参考文献:

http://blog.csdn.net/qtyl1988/article/details/39553339

Redis 非关系型数据库 ( Nosql )

标签:

人气教程排行