1,redis 简介
Remote Dictionary Server(Redis) 是一个基于 key-value 键值对的持久化数据库存储系统, redis 和大名鼎鼎的 memcached 缓存服务很像, 但是 redis 支持的数据类型更加丰富, 包括 string(字符串),list(链表),set(集合) 和 zset(有序集合) 等. 这些数据类型都是支持 push/php,add/remove 及取交集, 并集和差集以及更加丰富的操作, 而且这些操作都是原子性的, 在此基础上, redis 还支持各种不同的排序, 与 memcached 缓存服务一样, 为了保证效率, 数据都是缓存在内存中提供服务, 和 memcached 不同的是, redis 持久化缓存服务还会周期性把更新的数据写到磁盘已经把修改的操作记录追加到文件里记录, 比 memcached 更有优势的是, redis 还支持主从同步, 这点很类似关系型数据库 mysql.redis 的出现在一定程度上弥补了 memcached 这类 key-value 内存缓存服务不足, 在部分场合上可以对关系型数据库起到很好的补充作用.
1.redis 优点性能很高: redis 能支持超过 10 万每秒的读写评论丰富的数据类型: redis 支持二进制的 strings,lists,hashes,set 已经 ordered set 等数据类型操作原子: redis 的所有操作都是原子性的, 同时 redis 还支持对几个操作全并后的原子性操作丰富的特性: 主从复制: redis 支持异机主从复制 2. 数据类型: string 字符串类型 list(链表)set(集合)zset(有序集合 hash 哈希
3.redis 的应用场景传统的 mysql+memcached 的网站架构遇到的问题 mysql 数据库实际上是合适进行海量数据存储的, 加上通过 memcached 将热点数据存放到内存 cache 里, 达到加速数据访问的目的, 绝大部分公司都曾经使用过这样的架构, 但随着业务数量的不断增加, 和访问量的持续增加, 很多问题就会暴露出来
需要不断对 mysql 进行拆库拆表, memcached 也需要不断跟着扩容, 扩容和维护需要大量开发和运维时间
memcached 和 mysql 数据库数据一致性问题也是个大难题
memcached 数据命中率低或宕机, 会导致大量的访问直接穿透数据库, 导致 mysql 数据库无法支撑访问
跨机房 cache 同步一致性问题
所以就有了下面 redis 的应用场景:
redis 最佳试用场景是全部数据 in-memory
redis 更多场合作为 memcached 的代替品来使用
当需要除了 key-value 之外的更多数据类型支撑时, 使用 redis 更加合适
支持持久化
需要负债均衡的场景
2, 安装 redis
1. 安装 gcc 环境 yum install gcc-c++
2. 下载源码包并解压 wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar -zxvf redis-3.2.9.tar.gzcd redis-3.2.9
3. 安装 ruby2.4.1 并编译 (一定要安装大于 2.2.2 的 ruby, 要不然 redis 在 make 的时候会报错)wget http://ftp.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz tar -zxvf ruby-2.4.1.tar.gzcd ruby-2.4.1mkdir -p /usr/local/ruby./configure --prefix=/usr/local/rubymake && make installln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
4. 安装 makemake install PREFIX=/usr/local/rediscp redis.conf /usr/local/redis/bin/redis.confchmod /usr/local/redis/bin/redis.conf
5. 启动 redis./redis-server redis.conf
6. 验证./redis-cli -p 6379127.0.0.1:6379> set ab 123OK127.0.0.1:6379> get ab"123"
3, 搭建 redis 集群
1. 在 / usr/local / 下面创建 redis-cluster 目录 mkdir -p /usr/local/redis-cluster
2. 复制 / usr/local/redis/bin 目录到 redis-cluster 里面并重命名为 redis1cd /usr/localcp -r redis/bin redis-cluster/redis1
3.redis1,redis2,redis3,redis4,redis5,redis6(必须 6 个节点以上才能创建集群) 分别修改为 redis-7001.conf,redis-7002.conf 依次到 redis-7006.conf
以 redis-7001 为例: daemonize yes port 7001logfile "./redis-7001.log"protected-mode nopidfile /var/run/redis_7001.pidcluster-enabled yesappendonly yes
4. 将 redis-trib.rb 复到制 redis-cluster 目录里面 cp /root/redis-3.2.4/src/redis-trib.rb ./redis-cluster
5. 安装 gemyum install rubygems -y
6. 安装 ruby 的 redis 包 gem install redis
7. 分别进入 redis1,redis2,redis3,redis4,redis5,redis6 里面执行./redis-server redis-7001.conf
8. 用 redis-trib.rb 构建集群 cd /usr/local/redis-cluster/./redis-trib.rb create --replicas 1 172.16.0.100:7001 172.16.0.100:7002 172.16.0.100:7003 172.16.0.100:7004 172.16.0.100:7005 172.16.0.100:7006
9. 验证集群是否成功./redis-cli -h 172.16.0.100 -c -p 7002
- > set hello helloword
- > get hello
来源: http://www.bubuko.com/infodetail-2751506.html