redis2

作者: 流光已至 | 来源:发表于2019-05-03 15:25 被阅读0次
    1 怎么理解Redis事务?

    事务是一个单独的隔离操作,事务中所有命令都会序列化,按顺序执行。事务在执行过程中不会被其他客户端发送的请求命令所打断。
    事务是一个原子操作,事务中的命令要么全部被执行,要么全部不执行。

    2 Redis事务相关的命令有哪几个?

    四个
    MULTI: 组装一个事务
    EXEC: 执行一个事务
    DISCARD : 取消一个事务
    WATCH: 检测key,若key改变则取消事务。

    3 Redis key的过期时间和永久有效分别怎么设置?

    EXPIRE 和Persist

    4 Redis如何做内存优化?

    尽量使用散列表(hashes),散列表(是说它存储的数据少)使用的内存非常小,所有你应该仅可能将你的数据模型抽象为散列表。

    5 Redis回收使用的是什么算法?

    LRU算法

    6 Redis如何做大量数据插入

    Redis2.6以后,redis-cli支持一种被称为pipe mode的新模式来执行大量数据插入。

    7为什么要做Redis分区?

    为了使redis管理更多内存,redis可以使用所有机器上的内存,如果没有分区,你最多使用一台机器上的内存。分区使redis的运算能力通过简单的计算机增加得到成倍的提升,网络带宽也随着计算机和网卡的增加而成倍增加。

    8 你知道有哪些Redis分区实现方案

    1 客户端分区: 就是在客户端已经决定数据存储到哪个redis节点或从哪个redis节点读取数据,大部分客户端已经实现了客户端分区。
    2 代理分区: 就是客户端将请求发送给代理,然后代理决定去哪个redis节点写数据或者读数据。代理根据分区规则决定去请求哪些redis实例,并根据redis响应结果返回给客户端。redis和memcached的一种代理实现就是Twemproxy.
    3 查询路由: 意思是客户端随机地请求任意一个redis实例,然后由redis将请求转发给正确的redis节点。redis-cluster实现了一种混合形式查询路由,但请求并不是从一个redis节点转发到另一个节点,而是在客户端帮助下直接重定向到正确的redis节点。

    9 Redis分区有什么缺点?

    1 涉及多个key的操作通常不会被支持,例如你无法直接对集合求交集,它们可能存放在不同的实例上。
    2 多个key操作,无法使用redis事务。
    3 分区的粒度是key,不能使用一个非常长的排序key存储一个数据集。
    4 分区后,数据处理可能非常复杂,如备份时需要从不同的实例和主机上收集RDB/AOF文件。
    5 分区后动态扩容或缩容可能很复杂。redis-cluster可以最大限度的保证在增加节点或删除节点时,对用户透明的数据再平衡。但客户端分区和一些代理分区不支持这种特性。

    10 Redis常见性能问题和解决方案?

    1 master不要做任何持久化工作,如rdb内存快照和Aof日志文件
    2 如果数据比较重要,某个slave开启aof备份数据,策略设置为每秒同步一次。
    3 为了主从复制的速度和连接的稳定性,master和slave最好在同一个局域网内。
    4 不要在压力很大的主库上增加从库
    5 主从复制不要采用网状结构,使用单向链表结构更为稳定,即 master <- slave1 <-slave2 .........

    11 如何选择合适的持久化方式?

    Rdb持久化方式能够在指定时间间隔对数据进行快照存储。
    Aof持久化记录了每次对服务器写的操作,服务器重启时会重新执行这些命令来恢复原始的数据。
    一般来说,当你想要达到足够的数据安全时,需要同时使用两种持久化功能,如果你能够忍受数分钟数据丢失,推荐使用rdb方式。
    并不推荐只使用aof持久化方式
    1: 定时执行rbd内存快照,非常便于数据备份
    2: rbd恢复数据集的速度要比aof快
    3: 使用rdb还可以避免aof程序的bug.

    相关文章

      网友评论

          本文标题:redis2

          本文链接:https://www.haomeiwen.com/subject/lclonqtx.html