设为首页 收藏本站
查看: 781|回复: 0

[经验分享] Redis 开源缓存数据库

[复制链接]

尚未签到

发表于 2018-11-3 07:09:58 | 显示全部楼层 |阅读模式
  Redis 是一个开源的,高性能的 key-value 系统,可以用来缓存或存储数据。Redis 数据可以持久化,并且支持多种数据类型:字符串(string),列表 (list),哈希(hash),集合(set)和有序集合(sorted set)。能够对关系型数据库起到很好的补充作用。它还提供了多种客户端 Python,Ruby,Erlang,PHP ,可以方便调用。
  持久化:
  Redis 是一种内存数据库(跟 memcache 类似),在数据存取效率方面很优秀,由于内存中的数据时刻面临丢失的危险,Redis 提供了两种持久化机制,及时将内存中的数据写入磁盘。
  RDB 利用存储快照的方式把内存数据定期写入磁盘,半持久化
  AOF 利用写日志的方式(类似 mysql 的 binlog),每执行一条更改 Redis 数据的命令,就写入到磁盘的一个 aof 文件中
  Redis 默认开启 RDB 模式,关闭 AOF 模式,因为 AOF 更耗资源,但是对数据安全极高,称为全持久化,按需选择哪种模式。
  主从功能:
  为了防止 Redis 磁盘损坏,导致数据丢失,Redis 提供了复制功能,将一个主数据库的数据自动同步到从数据库,防止数据丢失。
  主从原理:
  1、从数据库启动后,向主数据库发送 SYNC 命令
  2、主数据库收到 SYNC 命令后开始保存快照,在此期间所有发给主数据库的命令都被缓存起来
  3、快照保存完后,主数据库把快照和缓存的命令一起发给从数据库
  4、从数据库保存主数据发来的快照文件,并依次执行主数据库发来的缓存命令
  在同步过程中,从数据库不会阻塞,它默认使用同步之前的数据继续响应客户端发来的命令
  下载地址:https://code.google.com/p/redis/downloads/list
  一、安装 Redis
  [root@study src]# tar zxf redis-2.6.10.tar.gz
  [root@study src]# cd redis-2.6.10
  [root@study redis-2.6.10]# make
  [root@study redis-2.6.10]# make install
  二、调整 Redis
  [root@study ~]# mkdir /usr/local/redis
  [root@study ~]# cd !$
  [root@study redis]# cp ../src/redis-2.6.10/redis.conf .
  [root@study redis]# cp ../src/redis-2.6.10/src/redis-cli .
  [root@study redis]# cp ../src/redis-2.6.10/src/redis-server .
  [root@study redis]# cp ../src/redis-2.6.10/src/redis-sentinel .
  [root@study redis]# cp ../src/redis-2.6.10/src/redis-benchmark .
  [root@study redis]# cp ../src/redis-2.6.10/src/redis-check-aof .
  [root@study redis]# 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
  [root@study redis]# mv redis.conf redis.conf.bak
  [root@study redis]# 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
  save 300 10
  save 60 10000
  ## 从内存保存数据到磁盘的策略
  ## 当有 1 条 keys 数据改变时,900 秒刷新到磁盘一次
  ## 当有 10 条 keys 数据改变时,300 秒刷新到磁盘一次
  ## 当有 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
  ## 同步数据到磁盘的规则,
  ## no 不主动写入磁盘,依赖与系统的写入,一般 30 秒左右写入一次,性能最好,但是持久化没有保证。
  ## everysec 每秒强制写入磁盘一次,在性能跟持久化方面折中,推荐使用。
  ## always 每次收到写操作就立即强制写入磁盘,是最有保证的完全持久化,但是速度慢。
  #no-appendfsync-on-rewrite yes
  ## 在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成磁盘 IO 上的冲突
  #auto-aof-rewrite-percentage 100
  ## 当前 AOF 文件的大小是上次日志重写得到的 AOF 文件大小的两倍时,自动启动新的日志重写过程
  #auto-aof-rewrite-min-size 64mb
  ## 当前 AOF 文件启动新的日志重写过程的最小值,避免刚启动 redis 时由于文件较小导致频繁重写
  #-----------------------------------------------------------------------------------------------------
  四、启动 Redis
  [root@study ~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
  [root@study ~]# sysctl vm.overcommit_memory=1
  ## 调整内核参数,如果不调整 redis 会报一个警告信息
  [root@study ~]# mkdir /usr/local/redis/data # 创建 data 目录
  [root@study ~]# mkdir /usr/local/redis/logs # 创建 logs 目录
  [root@study ~]# redis-server /usr/local/redis/redis.conf # 启动 redis ,需要指定配置文件路径
  [root@study ~]# netstat -anpt | grep redis
  tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1176/redis-server
  五、测试 Redis
  -----------------------------------------------------------------------------------------------------
  [root@study ~]# 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
  [root@study ~]# ls /usr/local/redis/data/
  ## 没有生成 dump.rdb ,因为半持久化的 save 规则没有触发
  [root@study ~]# redis-cli shutdown
  [root@study ~]# ls /usr/local/redis/data/
  dump.rdb
  ## 当关闭 redis 的时候,会将内存中的数据保存为 dump.rdb
  [root@study ~]# redis-server /usr/local/redis/redis.conf
  [root@study ~]# redis-cli
  redis 127.0.0.1:6379> get password
  "123"
  redis 127.0.0.1:6379> quit
  ## redis 启动后从 dump.rdb 文件中读取数据,所以数据依然存在
  -----------------------------------------------------------------------------------------------------
  [root@study ~]# rm -rf /usr/local/redis/data/*
  [root@study ~]# 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
  [root@study ~]# kill -9 `cat /usr/local/redis/logs/redis.pid`
  ## 当不是正常关闭 redis 时,如 kill -9 、redis 服务器突然宕机等
  [root@study ~]# ls /usr/local/redis/data/
  ## 是不会将内存中的数据同步到磁盘的,也就是说不会生成 dump.rdb 文件
  [root@study ~]# redis-server /usr/local/redis/redis.conf
  [root@study ~]# redis-cli
  redis 127.0.0.1:6379> get password
  (nil)
  redis 127.0.0.1:6379> quit
  ## 这时启动 redis ,发现数据丢失了 。如果不能忍受这种丢失可以启动 AOF 全持久化。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629991-1-1.html 上篇帖子: redis密码相关的配置 下篇帖子: CacheEasy-Redis私有云平台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表