分布式缓存Redis

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

原文地址:http://blog.51cto.com/13491150/2061664

时间: 2024-11-05 17:17:45

分布式缓存Redis的相关文章

企业项目开发--分布式缓存Redis

第九章 企业项目开发--分布式缓存Redis(1) 注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis 1.1.为什么用分布式缓存(或者说本地缓存存在的问题)? 见<第八章 企业项目开发--分布式缓存memcached> 1.2.有了memcached,为什么还要用redis? 见<第一章 常用的缓存技术> 2.代码实现 2.1.ssmm0 pom.xml 只在dev环境下添加了以下代码

第十章 企业项目开发--分布式缓存Redis(2)

注意:本章代码是在上一章的基础上进行添加修改,上一章链接<第九章 企业项目开发--分布式缓存Redis(1)> 上一章说了ShardedJedisPool的创建过程,以及redis五种数据结构的第一种String类型的常用缓存操作方法.下面说余下的四种: list(有序列表) set(无序集合) sorted set(有序集合) hash 1.ssmm0-cache 1.1.RedisListUtil(有序列表工具类) 1 package com.xxx.cache.redis; 2 3 im

分布式缓存Redis Centos下单节点安装

摘要: Redis官网:http://redis.io 独立缓存服务器:IP:xxx.xxx.xxx.xxx 安装环境:CentOS 6.6 Redis 版本:redis-3.0 (因为 Redis3.0 在集群和性能提升方面的特性,rc 版为正式版的候选版,请在安装时去官网选用最新版) 用户:root 安装目录:/usr/local/redis 声明: 网上关于分布式缓存Redis的学习资料很多,大家可以去网上找些资料去学习.另外 JEESZ框架面向企业的大型互联网分布式企业架构,分布式缓存是

.NET分布式缓存Redis从入门到实战

一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用.本次分享课程包含以下知识点: 1.StackExchange.Redis (简称:SE)驱动在C#中Redis几种数据结构学习和使用. 2.ServiceStack.Redis ( 简称: SS) 驱动在C#中Redis几种数据结构学习和使用. 3.Redis主从集群服务器搭建和学习. 4.在ASP.NET中Re

分布式缓存Redis应用场景解析

Redis的应用场景非常广泛.虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写.海量数据的读写等.举个例子,A网站首页一天有100万人访问,其中有一个"积分商城"的板块,要直接从数据库查询,那么一天就要多消耗100万次数据库请求.如果将这些数据储存到Redis(内存)中,要用的时候,直接从内存调取,不仅可以大大节省系统直接读取磁盘来获得数据的IO开销,提高服务器的资源利用率,还能极大地提升速度.随着日益增长的用户

C# Azure 分布式缓存Redis的新建与配置

1. 介绍 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键包括 string,hash,list,set,sorted set,bitmap 和 hyperloglog,所以常常被称为数据结构服务器.你可以在这些类型上面运行原子操作,例如,追加字符串,增加哈希中的值,加入一个元素到列表,计算集合的交集.并集和差集,或者是从有序集合中获取最高排名的元素. 为了满足高性能,Redis 采用内

分布式缓存Redis使用心得

一.缓存在系统中用来做什么 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除.Redis3.0以后开始支持集群,实现了半自动化的数据分片,不过需要smart-client的支持. 二.从不同的角度来详细介绍redis 网络模型:Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现

第九章 企业项目开发--分布式缓存Redis(1)

注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis 1.1.为什么用分布式缓存(或者说本地缓存存在的问题)? 见<第八章 企业项目开发--分布式缓存memcached> 1.2.有了memcached,为什么还要用redis? 见<第一章 常用的缓存技术> 2.代码实现 2.1.ssmm0 pom.xml 只在dev环境下添加了以下代码: <!-- redis:多台服务器支架用什么

C# Azure 存储-分布式缓存Redis在session中的配置

1. 开始 对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知的错误.如下图: 如果用Redis的分布式缓存,则能避免上面的情况.因为session是保存在Redis中,不会有丢失的情况,就算中途有服务器A挂掉.如下图: 2. 代码 1)在包管理器中,输入下面的包,安装 Install-Package Microsoft.Web.RedisSessionSta