Redis 是完全开源免费的,是一个高性能的key-value数据库,与其他 key - value 缓存产品有以下特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
- 性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s 。
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar –zxvf redis-3.2.4.tar.gz
cd /usr/local/redis-3.2.4
make
可能出现问题make[3]: gcc: Command not found,安装gcc编译工具即可(yum)
- 安装
进入src文件夹,进行安装
cd src
make install
[root@iZwz9io83xn1czh8rty3qlZ redis-3.2.4]# redis-server -v
Redis server v=3.2.4 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=cf1cd2895fae0ed6
vi redis.conf
bind xxx.xxx.xxx.xxx
port xxxx
timeout xxx
daemonize yes
pidfile /usr/local/redis-3.2.4/redis.pid
loglevel debug
logfile "/usr/local/redis-3.2.4/redis.log"
databases 16
after 900 sec (15 min) if at least 1 key changed
15分钟内,至少有1个key发生改变,则保存快照
save 900 1
save 300 10
save 60 10000
redis根目录下执行
redis-server redis.conf
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
- String : get、set。注意:一个键最大能存储512MB。
- Hash : hmset、hmget、hkeys、hvals
- List:Lpush、lrange
- Set : sadd、smembers
- zset :
zadd 集合名 序号 集合元素
zadd myzset 1 z1
zadd myzset 2 z2 3 z3
zcard myzset #查看zset集合的成员个数
zrange myzset 0 -1 withscores
zrank myzset z1 #获取zset成员的下标位置
zcount myzset 1 3
zrem myzset z1 #删除指定的一个成员或多个成员
zscore myzset z1
zincrby myzset 4 z1 #z1的分数值加4
zrangebyscore myzset 1 5
Redis 事务可以一次执行多个命令, 有如下特点:
1. 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
2. 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
3. 一个事务从开始到执行会经历以下三个阶段:
#开始一个事物
MULTI
#命令入队
Set test test1
Get test
#执行事物
Exec
注意:在安装之前,请确保您有 root 权限。
- 源码安装
下载最新版的 Ruby 压缩文件。
解压到新创建的目录下:
$ tar -xvzf ruby-2.2.3.tgz
$ cd ruby-2.2.3
$ ./configure
$ make
$ sudo make install
$ruby -v
ruby 2.2.3……
如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。
ruby安装2.0版本以上,直接包含gem
wget https://rubygems.org/downloads/redis-3.3.1.gem
gem install -l redis-3.3.1.gem
./redis-trib.rb create --replicas 1 xxx.xxx.xxx.xxx:1000 xxx.xxx.xxx.xxx:2000 xxx.xxx.xxx.xxx:3000 xxx.xxx.xxx.xxx:1010 xxx.xxx.xxx.xxx:2010 xxx.xxx.xxx.xxx:3010
–replicas 1 设置从节点个数
进入集群模式去操作redis命令,-c集群模式
redis-cli -c -h xxx.xxx.xxx.xxx –p 1000
./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
查看节点情况
cluster nodes
移动哈希槽,哈希槽重新分配
./redis-trib.rb reshard 127.0.0.1:7000
输入all 表示从所有的主节点中随机转移,凑够xx个哈希槽
把hash slots转出来,转到其他master节点上
./redis-trib.rb reshard 127.0.0.1:7000
然后删除节点
./redis-trib.rb del-node xxx.xxx.xxx.xxx:9020 94ee1415a16076f4070c5dd4b94defc14618dbb8
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。
vi redis-sentinel
sentinel monitor mymaster 127.0.0.1 6379 2
这个2代表,当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。
sentinel down-after-milliseconds mymaster 60000
sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了(subjectively down, 也简称为SDOWN)。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。
sentinel failover-timeout mymaster 180000
failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败
sentinel parallel-syncs mymaster 1
当新master产生时,同时进行“slaveof”到新master并进行“SYNC”的slave个数
默认为1,建议保持默认值
[root@iZwz9io83xn1czh8rty3qlZ src]# ./redis-sentinel /usr/local/redis-3.2.4/cluster/sentinel.conf
31525:X 13 Nov 20:22:22.022 # Not listening to IPv6: unsupproted
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.4 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in sentinel mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
| `-._ `._ / _.-' | PID: 31525
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
31525:X 13 Nov 20:22:22.024 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
31525:X 13 Nov 20:22:22.038 # Sentinel ID is ef32ac43a34f2106d8306579ef9589f6846c9b2c
31525:X 13 Nov 20:22:22.038 # +monitor master mymaster3000 xxx.xxx.xxx.xxx 3000 quorum 1
31525:X 13 Nov 20:22:22.038 # +monitor master mymaster2000 xxx.xxx.xxx.xxx 2000 quorum 1
31525:X 13 Nov 20:22:22.038 # +monitor master mymaster1000 xxx.xxx.xxx.xxx 1000 quorum 1
31525:X 13 Nov 20:22:22.078 * +slave slave xxx.xxx.xxx.xxx:1010 xxx.xxx.xxx.xxx 1010 @ mymaster1000 xxx.xxx.xxx.xxx 1000
31525:X 13 Nov 20:22:22.091 * +slave slave xxx.xxx.xxx.xxx:3010 xxx.xxx.xxx.xxx 3010 @ mymaster3000 xxx.xxx.xxx.xxx 3000
31525:X 13 Nov 20:22:22.098 * +slave slave xxx.xxx.xxx.xxx:2010 xxx.xxx.xxx.xxx 2010 @ mymaster2000 xxx.xxx.xxx.xxx 2000