redis

redis简介

1.Redis是一个key-value存储系统。
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
2.在此基础上,redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
3.Redis支持主从同步。
数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。

redis优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

redis安装
下载地址http://redis.io/download,下载最新稳定版本。$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz
$ tar xzf redis-4.0.9.tar.gz -C /usr/local
$ cd redis-4.0.9
$ yum install -y make gcc
$ make

redis简单配置
# cp redis.conf redis.conf.bak
# vim redis.conf    ---修改如下
bind 127.0.0.1  #只监听内网IP
daemonize yes     #开启后台模式将on改为yes
timeout 300      #连接超时时间
port 6379                      #端口号
databases 0                存储Session的Redis库编号 1~16  systemctl启动不能为0
dir ./  #本地数据库存放目录该目录需要存在
pidfile /var/run/redis_6379.pid  #定义pid文件
logfile /var/log/redis_6379.log  #定义log文件
#requirepass tiger    # 设置密码

配置redis为systemctl启动

redis启动
启动前可能会提示 systemctl daemon-reloadmake完后 redis-4.0.9目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
$ src/redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src
$ ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
redis客户端测试
要开启客户端的
$ src/redis-cli
127.0.0.1:6379> set 1901 GZ
OK
127.0.0.1:6379> get 1901
"GZ"
127.0.0.1:6379> ping
PONG


redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
redis主从 + 哨兵
主从 - 用法像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。
redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低redis的处理性能。
主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。
在主从架构中,从服务器通常被设置为只读模式,这样可以避免从服务器的数据被误修改。但是从服务器仍然可以接受CONFIG等指令,所以还是不应该将从服务器直接暴露到不安全的网络环境中。如果必须如此,那可以考虑给重要指令进行重命名,来避免命令被外人误执行。

2.修改slave1的配置文件:

配置哨兵模式
1.每台机器上修改redis主配置文件redis.conf文件设置:bind 0.0.0.0 ---配置主从时已经完成
2.每台机器上修改sentinel.conf配置文件:修改如下配置
[root@redis-master src]# cd ..
[root@redis-master redis]# vim sentinel.conf
        sentinel monitor mymaster 192.168.19.129 6379 2 (slave上面写的是master的ip,master写自己ip)
        sentinel down-after-milliseconds mymaster 3000
        sentinel failover-timeout mymaster 10000
        protected-mode no

关闭加密
protected-mode no
构成master客观下线的前提,至少有两个sentinel(哨兵)主观认为master已经下线
sentinel monitor mymaster 192.168.19.129 6379 2 
sentinel每隔一定时间向其已知的master发送ping指令,在设置的这个时间内如果没有收master返回的数据包,就会把master标记为主观下线。单位为毫秒
sentinel down-after-milliseconds mymaster 3000
在这个时间内如果主从切换没有完成就停止切换。单位毫秒
sentinel failover-timeout mymaster 10000

3.每台机器启动哨兵服务:
       # ./src/redis-sentinel sentinel.conf
注意:在生产环境下将哨兵模式启动放到后台执行:        ./src/redis-sentinel sentinel.conf &
在master上面执行
这是启动成功的!

将master的哨兵模式退出,再将redis服务stop了,在两台slave上面查看其中一台是否切换为master:(没有优先级,为随机切换)
master 192.168.19.129

主从+哨兵模式测试部署完成!
了解 主从+哨兵+lvs  制作redis主从的高可用
redis切片等

你可能感兴趣的:(redis)