zoukankan      html  css  js  c++  java
  • redis入门

    1.redis是什么?

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

    2.redis能做什么?优势在哪?

    redis的性能极高(Redis能读的速度是110000次/s,写的速度是81000次/s)

    支持的数据类型丰富(Strings, Lists, Hashes, Sets ,Ordered Sets, HyperLogLog)

    同时可以作成消息队列(支持发布/订阅)

    而且操作均为原子性(甚至合并操作的原子性)

    主要的应用场景:

    缓存(热数据)、计数器、队列(用作简单使用)、位操作、分布式锁与单线程机制、最新列表、排行榜等

    Redis的7个应用场景

    https://www.cnblogs.com/NiceCui/p/7794659.html

    3.redis支持的数据结构有哪些?

    Strings, Lists, Hashes, Sets ,Ordered Sets, HyperLogLog(>=2.8.9)

    4.redis如何实现消息队列?

    redis消息队列使用 redis中的list数据结构实现(左进右出),然后加上发布/订阅模型(即观察者模式),把耦合点单独抽离出来作为第三方,隔离易变化的发送方和接收方。

    redis 消息发布订阅与消息队列

    https://blog.csdn.net/jslcylcy/article/details/78201812

    5.redis集群的实现?

    Redis 在 3.0 版本以后就推出了集群模式。

    Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。

    Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

    slot机制

    https://yq.aliyun.com/articles/66939

    Redis 集群搭建详细指南

    http://www.cnblogs.com/mafly/p/redis_cluster.html

    redis集群的扩/缩容

    https://blog.csdn.net/a491857321/article/details/52058693

    6.redis原子性的实现?

    主要通过MULTI(开始事务)、WATCH(监视key,有变化则撤销事务)、EXEC(执行事务)实现

    Redis 事务

    https://www.w3cschool.cn/redis/redis-transactions.html

    7.redis锁的实现?

    分布式锁一般有数据库乐观锁、基于Redis的分布式锁以及基于ZooKeeper的分布式锁三种实现方式

    锁的可靠性:互斥性、死锁、解锁还需加锁人

    基于Redis的分布式锁

    https://www.w3cschool.cn/redis/redis-yj3f2p0c.html

    8.redis的日志策略?

    redis在默认情况下,是不会生成日志文件的,所以需要配置(建议使用config get/set进行配置)。

    redis日志配置方法

    https://blog.csdn.net/lhjllff12345/article/details/73564959/

    9.redis持久化策略?

    目前,通常的设计思路是利用Replication机制来弥补aof、snapshot性能上的不足,达到了数据可持久化。即Master上Snapshot和AOF都不做,来保证Master的读写性能,而Slave上则同时开启Snapshot和AOF来进行持久化,保证数据的安全性。

    关于Redis持久化

    http://www.cnblogs.com/chenpingzhao/p/5158791.html

    10.redis的数据恢复?

    redis通过SAVE、BGSAVE来进行备份(在redis安装目录中得到dump.rdb)

    通过CONFIG GET dir得到安装目录(如/usr/local/redis/bin)

    通过将dump.rdb放置在安装目录,即可实现数据恢复

    注:BGSAVE、SAVE最好放在slave上进行,原因见9

    11.redis淘汰机制?

    server.maxmemory - 必须设置,不设置则在超过最大内存时,redis崩溃

    maxmemory-policy - 设置淘汰机制

    redis主要有6种淘汰机制

    volatile-lru - 从已设置过期时间的数据集中淘汰较少使用的(Least Recently Used)

    volatile-ttl - 从已设置过期时间的数据集中淘汰将要过期的

    volatile-random - 从已设置过期时间的数据集中随机淘汰数据

    allkeys-lru - 从所有数据集中淘汰较少使用的

    allkeys-random - 从所有数据集中随机淘汰数据

    no-enviction - 禁止驱除数据

    注1:因为涉及到分布式内存下LRU算法的时间与空间复杂度,redis的lru不是可靠的lru

    注2:一般在redis做缓存+持久化数据库的系统中,使用volatile-lru(幂律分布)或volatile-random(平等分布);在redis只做缓存数据库的系统中,使用allkeys-lru(幂律分布)或allkeys-random(平等分布)

    《redis学习》-- 缓存淘汰策略

    https://blog.csdn.net/lizhi_java/article/details/68953179?locationNum=1&fps=1

  • 相关阅读:
    CSS 字体
    列表排列
    IE6 fixed 页面抖动
    HTML中css和js链接中的版本号(刷新缓存)
    CSS3 box-shadow
    CSS3的文字阴影—text-shadow
    [LeetCode][JavaScript]Add Digits
    [LeetCode][JavaScript]Max Points on a Line
    [LeetCode][JavaScript]Subsets II
    [LeetCode][JavaScript]Subsets
  • 原文地址:https://www.cnblogs.com/yc913344706/p/9201246.html
Copyright © 2011-2022 走看看