史上最全Redis高可用技术解决方案大全

2018-4-9 杜世伟 Redis

Redis常见的几种主要使用方式:

  • Redis 单副本

  • Redis 多副本(主从)

  • Redis Sentinel(哨兵)

  • Redis Cluster

  • Redis 自研


Redis各种使用方式的优缺点:

1
Redis单副本

Redis 单副本,采用单个Redis节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务场景。


优点:

1、架构简单、部署方便

2、高性价比,当缓存使用时无需备用节点(单实例可用性可以用supervisor或crontab保证),当然为了满足业务的高可用性,也可以牺牲一个备用节点,但同时刻只有一个实例对外提供服务。

阅读全文>>

标签: redis sentinel cluster

评论(0) 浏览(2047)

天下无难试之Redis面试刁难大全

2017-12-30 杜世伟 Redis

Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。作为一名在互联网技术行业打击过成百上千名【请允许我夸张一下】的资深技术面试官,看过了无数落寞的身影失望的离开,略感愧疚,故献上此文,希望各位读者以后面试势如破竹,永无失败!

Redis有哪些数据结构?

字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。

如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。

如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。

使用过Redis分布式锁么,它是什么回事?

先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

这时候对方会告诉你说你回答得不错,然后接着问如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?

这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。紧接着你需要抓一抓自己得脑袋,故作思考片刻,好像接下来的结果是你主动思考出来的,然后回答:我记得set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!对方这时会显露笑容,心里开始默念:摁,这小子还不错。

阅读全文>>

评论(0) 浏览(1638)

《Redis官方教程》Redis集群规范

2016-6-20 杜世伟 Redis

Redis集群规范


欢迎来到Redis集群规范。在这里你可以找到有关Redis的算法和设计的基本原理。这篇文章是一项正在进行的工作,因为它是不断地与Redis的实际实现同步。

 主要属性和设计原理


Redis的集群目标


 Redis集群是一个分布式的实现,具有以下目标,按设计的重要性排序:

  • 高性能,并且多达1000个节点的线性可扩展性。没有代理,使用异步复制,并且在进行赋值时没有合并操作。
  • 可接受程度的写安全:当客户端与大多数master节点建立连接后,系统努力(使用最优的方式)保持来自客户端的写操作。通常有小窗口,其中确认的写操作可能会丢失。当客户端在一个小的分区中,窗口丢失写操作会更大。
  • 可用性:Redis集群支持网络分区——其中大部分主节点都可访问,并且不可访问的各master节点对应的从至少一个可访问。而且采用副本迁移,有多个从的主会提供一个从给没有从的主。

阅读全文>>

标签: redis

评论(0) 浏览(1912)

Redis 未授权访问缺陷可轻易导致系统被黑

2015-11-15 杜世伟 Redis

        Redis 默认情况下,会绑定在 0.0.0.0:6379,并且没有开启auth认证,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器。

        解决办法:

        a.配置bind选项, 限定可以连接Redis服务器的IP(如:bind 127.0.0.1), 并修改redis的默认端口6379(如:port 6300)
        b.配置AUTH, 设置密码开启密码验证, 密码会以明文方式保存在redis配置文件中.
        c.配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
        d.好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf

阅读全文>>

标签: redis linux

评论(0) 浏览(9890)

Redis配置文件详细介绍

2013-12-31 杜世伟 Redis

Redis是一个开源(BSD许可)的内存数据结构存储,可作为数据库,缓存和消息队列。相比Memcached它支持更多的数据结构,如string(字符串),hash(哈希),list(链表),set(集合),zset(有序集合),位图,hyperloglogs和具有半径查询的地理空间索引。Redis具有内置复制,Lua脚本,LRU回收,事务和不同级别的磁盘持久化,并通过Redis Sentinel提供高可用性和自动分区的Redis Cluster。

本章学习下Redis主配置文件涉及的知识点,有助于更灵活的使用它。

# vi redis.conf

daemonize yes #是否以后台进程运行
pidfile/var/run/redis/redis-server.pid #pid文件位置
port 6379 #监听端口
bind 127.0.0.1 #绑定地址,如外网需要连接,设置0.0.0.0
timeout 300 #连接超时时间,单位秒
loglevel notice #日志级别,分别有:debug (适用于开发和测试),verbose(更详细信息),notice(适用于生产环境),warning(只记录警告或错误信息)
logfile/var/log/redis/redis-server.log #日志文件位置
syslog-enabled no #是否将日志输出到系统日志
databases 16 #设置数据库数量,默认数据库为0
############### 快照方式 ###############

阅读全文>>

标签: redis redis.conf

评论(0) 浏览(1621)

使用Redis的五个注意事项

2012-10-23 杜世伟 Redis

1.使用key值前缀来作命名空间

虽然说Redis支持多个数据库(默认32个,可以配置更多),但是除了默认的0号库以外,其它的都需要通过一个额外请求才能使用。所以用前缀作为命名空间可能会更明智一点。

另外,在使用前缀作为命名空间区隔不同key的时候,最好在程序中使用全局配置来实现,直接在代码里写前缀的做法要严格避免,这样可维护性实在太差了。

阅读全文>>

标签: redis

评论(0) 浏览(3822)

redis 排序

2012-9-12 杜世伟 Redis

本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序。排序命令是sort 完整的命令格式如下:
SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey]
下面我们一一说明各种命令选项
(1)sort key
这个是最简单的情况,没有任何选项就是简单的对集合自身元素排序并返回排序结果.下面给个例子

阅读全文>>

标签: redis sort

评论(0) 浏览(3955)

Powered by emlog 沪ICP备2023034538号-1