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

[经验分享] 分布式缓存Redis

[复制链接]

尚未签到

发表于 2018-11-3 07:35:25 | 显示全部楼层 |阅读模式
  分布式缓存Redis
  参考文档http://doc.redisfans.com
  #######################################################
  Memcache与Redis对比
  Memcached             Redis
  不支持持久化        持久化
  纯set get性能好     不如memcached
  开发都会用          开发都知道
  简单易用            易用
  支持类型单一        支持多种数据类型
  依赖magent           集群
  没有验证             有基础验证
  session              购物车(登录前方cookis,等于后写入)
  tomcat-sessione-memcache   tomcat-session-redis
  php.php.ini             后来才有
  #######################################################
  雪崩效应
  1、写两份
  2、预刷新
  #######################################################
  安装Redis
  cd /usr/local/src/
  wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  tar -zxvf redis-3.0.7.tar.gz
  cd redis-3.0.7
  yum install gcc
  make MALLOC=libc PREFIX=/usr/local/redis-3.0.7 install
  cd /usr/local/src/redis-3.0.7/utils
  cp redis_init_script /etc/init.d/redis
  vim /etc/init.d/redis
  EXEC=/usr/local/redis/bin/redis-server
  CLIEXEC=/usr/local/redis/bin/redis-cli
  ln -s /usr/local/redis-3.0.7/ /usr/local/redis
  chmod +x /etc/init.d/redis
  mkdir /etc/redis/
  cp /usr/local/src/redis-3.0.7/redis.conf /etc/redis/6379.conf
  #######################################################
  修改配置文件
  vim /etc/redis/6379.conf
  daemonize yes  #后台启动
  pidfile /var/run/redis_6379.pid #为了以后启动多个redis
  bind 192.168.56.21
  logfile "/var/log/redis/redis_6379.log"
  dir /var/lib/redis_6379  #数据存放地点
  requirepass lmkmike #设置密码
  tcp-backlog 511
  ————————————————————————————————————————————————————————————————————
  mkdir /var/lib/redis_6379
  mkdir /var/log/redis/
  echo 512 > /proc/sys/net/core/somaxconn #必须大于511
  #######################################################
  Redis命令
  /etc/init.d/redis start
  报错
  WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
  如果设置0:如果没有足够内存,错误返回给应用程序。
  如果设置1:如果没有足够内存,可以分配所有物理内存。
  vim /etc/sysctl.conf
  vm.overcommit_memory = 1
  命令执行
  sysctl vm.overcommit_memory=1
  WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. T
  o fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting afte
  r a reboot. Redis must be restarted after THP is disabled.
  禁止大页内存,redis有自己的内存机制
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  关闭redis报错,是因为没有密码
  /etc/init.d/redis stop
  vim /etc/init.d/redis
  $CLIEXEC -h 192.168.56.21 -p $REDISPORT -a lmkmike shutdown
  再次启动
  /etc/init.d/redis start正常
  9340:M 16 Jan 19:59:36.054 # Server started, Redis version 3.0.7
  9340:M 16 Jan 19:59:36.054 DB loaded from disk: 0.000 seconds
  9340:M 16 Jan 19:59:36.054  The server is now ready to accept connections on port 6379
  #######################################################
  连接redis
  /usr/local/redis/bin/redis-cli -h 192.168.56.21 -p 6379
  auth lmkmike
  设置key:value(默认字符串)
  set name lmkmike
  get值
  get name
  查看所有的key
  keys *   #生产禁用
  判断是否存在key,返回1存在,返回0不存在
  exists name
  删除key
  del name
  查看数据类型
  type name
  让value加1
  set number 123
  INCR number
  get number
  (124)
  让value加2
  set number 123
  INCRBY number 2
  get number
  (125)
  #######################################################
  设置hash
  HSET car name BMW
  HSET car price 200000
  查看
  hgetall car
  hget car name
  hget car price
  删除其中一个值
  hdel car price
  查看这个hash所有的key
  hkeys car
  查看有几个元素
  hlen car
  删除car,del 可以删除所有的
  del car
  #######################################################
  list列表
  左侧插入
  lpush numbers 1
  lpush numbers a
  右侧插入
  rpush numbers a
  rpush numbers 89
  查看长度
  llen numbers
  查看所有
  lrange numbers 0 -1
  左侧弹出
  lpop numbers
  右侧弹出
  #######################################################
  集合设置
  sadd a 1
  sadd a 2
  sadd a 3
  sadd b 1
  sadd b 3
  sadd c 3
  查看集合的元素
  smembers a
  判断数据是否在集合当众
  192.168.56.21:6379> sismember a 1
  (integer) 1 #存在
  192.168.56.21:6379> sismember a 100
  (integer) 0  #不存在
  #######################################################
  集合运算
  查看差集
  192.168.56.21:6379> sdiff a b
  1) "1"
  查看交集
  192.168.56.21:6379> sinter a b
  1) "2"
  2) "3"
  查看并集
  192.168.56.21:6379> sunion a b
  1) "1"
  2) "2"
  3) "3"
  #######################################################
  Redis数据持久化
  RDB和AOF
  RDB:指定的时间间隔把数据保存在硬盘上。
  AOF:持久化记录服务器执行所有操作命令,并在服务器启动的时候,通过重新执行这些命令还原数据。
  打开RDB快照(默认一打开)
  保存在dir = /var/lib/redis_6379
  vim /etc/redis/6379.conf
  save 900 1     #(900秒内有1个key变化保存)
  save 300 10
  save 60 10000
  #######################################################
  开启AOF
  修改配置文件
  vim /etc/redis/6379.conf
  appendonly yes
  从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。
  这样的话, 当 Redis 重新启时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。
  #######################################################
  RDB切换到AOF
  在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :
  

为最新的 dump.rdb 文件创建一个备份。  
将备份放到一个安全的地方。
  
执行以下两条命令:
  

  
redis-cli> CONFIG SET appendonly yes
  

  
redis-cli> CONFIG SET save ""
  

  
确保命令执行之后,数据库的键的数量没有改变。
  
确保写命令会被正确地追加到 AOF 文件的末尾。
  

  步骤 3 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。
  步骤 3 执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。
  #######################################################
  配置从redis
  修改从redis配置文件
  vim /etc/redis/6379.conf
  slaveof 192.168.56.21 6379  #主redis信息
  masterauth lmkmike #主redis密码
  从redis默认只读,可以修改slave-read-only no 来可写
  启动redis
  /etc/init.d/redis start
  查看日志是否正常
  tail -f /var/log/redis/redis_6379.log
  验证是否同步
  /usr/local/redis/bin/redis-cli -h 192.168.56.20 -p 6379
  auth lmkmike
  keys *
  #######################################################
  1、redis集群,生产案列少。需要专业的客户端。
  2、codis 国内案例多,不需要客户端,对外透明。



运维网声明 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-630007-1-1.html 上篇帖子: redis lru缓存清理算法详解和相关配置 下篇帖子: 解决 php的session无法保存到redis-Linux架构师之路&DBA-51CTO博客
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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