•单点
•主从复制Replication
•高可用 Sentinel
•集群Cluster
1:官方站点: https://redis.io下载最新版或者最新stable版
2:解压源码并进入目录
3: 直接make
4:安装到指定的目录, make PREFIX=/usr/local/redis install
5:启动 redis-server
主从复制Replication
高可用Sentinel
sentinel.conf 配置如下所示:
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
启动 Sentinel
启动方式一:redis-sentinel /path/to/sentinel.conf
启动方式二: redis-server /path/to/sentinel.conf –sentine
Redis Cluster 集群
Redis集群
Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个
Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个
只包含自己的集群当中,要组建一个真正可工作的集群,必须将这些独立的节点连接起来,构成一个包含
多个节点的集群。
Redis集群分片
redis.conf集群配置文件示例
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
集群演示
下载redis 解压到cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
在7000 至 7005 中,各创建一个 redis.conf 文件,内容可以使用上面的示例配置文件,将配置中的端口号
从 7000 改为与文件夹名字相同端口。cluster-test 文件夹,然后用以下命令启动每个redis:
…/redis-server .7000/redis.conf
创建集群命令
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003
127.0.0.1:7004 127.0.0.1:7005
Redssion
特点:操作最简单,功能最丰富,Redis智能客户端,支持分布式集合,分布式锁,三方框架整合等。底层采
用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。使用比其他redis客户端效率高。
https://github.com/redisson/redisson/
Jedis
特点: Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。与Spring集成。作为其
官方推荐的Java版客户端jedis也非常强大和稳定,支持事务、管道及有jedis自身实现的分布式。
https://github.com/xetorthio/jedis
Redis Desktop Manager
特点:C++ 编写,响应迅速,性能好。但不支持数据
库备份与恢复
https://github.com/uglide/RedisDesktopManager
Redis Studio
特点:又一个C++编写的redis管理工具,仅支持
windows平台,支持xp操作系统
https://github.com/cinience/RedisStudi
CacheCloud (https://github.com/sohutv/cachecloud)
提供一个Redis云管理平台:实现多种类型(Redis Standalone、
Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现
象、提供完善统计、监控、运维功能、减少开发人员的运维成本和
误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入
客户端
功能
会话缓存 (Session Cache) ) 最常用的情景是会话缓存。用Redis缓存会话比其他存储(如Memcached)
的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部
丢失,大部分人都会不高兴的。
存 对象缓存 做Java项目的时候,通常会了加快查询效率,减少和数据库的连接次数,我们都会在代码中加
入缓存功能。Redis的高效缓存给我们解决了难题
锁 分布式锁 在互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,分布式批处理。
Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。
队列 Reids 在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息
队列平台来使用。
排行榜/器 计数器 Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合
(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。
所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”
Twitter 使用 Redis 来储存用户时间线(user timeline)。
StackOverflow 使用 Redis 来进行缓存和消息分发。
Github 使用 Redis 作为持久化的键值对数据库,并使用 Resque 来实现消息队列。
新浪微博 使 用Redis 来实现计数器、 反向索引、 排行榜、消 息 队列, 并 储存用户关 系 。
知乎 使用 Redis 来进行计数、缓存、消息分发和任务调度
Pinterest 使用 Redis 来构建关注模型(follow model)和兴趣图谱(interest graph)。
Flickr 使用 Redis 来构建队列。
(1)字符串
SET name "Tom"
GET name
SET counter 1000
INCR counter
DECR counter
APPEND name "Jack"
(2)散列类型
HMSET car name "volvo" color "black" price
20
HMGET car name
HEXISTS car name
HDEL car price
(3)列表类型
LPUSH lists redis
LPUSH lists mogodb
RPUSH lists mysql
LPOP lists
RPOP lists
LRANGE lists 0 10
(4)集合类型
SADD letters a
SADD letters a b c
SREM letters c d
SMEMBERS letters
SADD setA 1 2 3
SDIFF setA setB
(5)有序集合
ZADD tutorials 1 redis 2 mongodb 3 mysql 3 mysql
ZRANGE tutorials 0 10 WITHSCORES
(6)事务
MULTI
INCR likes
INCR visitors
EXEC
(7)生存时间
SET session uuid11
EXPIRE session 20
TTL session
(8)排序
LPUSH mylist 4 2 6 1 7 3
SORT mylist
LPUSH mylistalpha a c e d c a
SORT mylistalpha ALPHA
(9)消息通知
PUBLISH redisChat "Redis is a great caching technique"
SUBSCRIBE redisChat
PUBLISH redisChat "Learn redis by tutorials point"