分布式缓存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 国内案例多,不需要客户端,对外透明。