• redis memcached


    redis是开源BSD许可高级的key-value存储系统(NoSQL)
    可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务

    redis和memcached相比的独特之处:
    1、redis可以用来做存储(storage),而memcached是用来做缓存(cache)
    这个特点主要因为其有持久化功能

    2、redis中存储的数据有多种结构,而memcached存储的数据只有一种类型“字符串”

    redis  从海量数据查询某一个固定前缀的key要注意

    少量的话用命令,get keys pattern 例如 keys  zhang*

    海量的数据用 scan sursor [MATCH pattern] [COUNT count]  这个返回来的游标可能会重复所以记得把key去重

    redis 设置分布式锁

    setnx key value  如果设置成功,返回1,设置失败,返回0

    解决setnx锁长期有效的问题

    setnx  key value [EX seconds] [PX milliseconds] [NX|XX]  如果设置成功返回OK,否则返回nil

    用redis的list作为队列,rpush生产消息,lpop消费消息

    缺点,没有等待队列有值就去消费,导致读不到数据,

    弥补,可以通过应用层引入sleep机制去调用lpop重新

    也可以用blpop key [key ....] timeout 阻塞直到队列有消息或者超时

    缺点,只能一个链接的消费者消费。

    RDB持久化,保存某个时间点的全量数据快照

    1.手动触发RDB

    save命令:阻塞redis的服务器进程,知道rdb文件被创建

    bgsave命令:fork出一个进程来创建rdb文件,不阻塞服务器进程

    2,自动触发RDB

    根据redis.conf配置里的save m n定时触发(用的是bgsave)

    主从复制时,主节点自动触发

    执行debug reload

    执行shutdown且没有开启aof持久化

    AOF(Append-only-file)持久化:保存写状态

    记录下除了查询之外的所有变更数据库的状态的指令

    以append的形式追加保存到AOF文件中(增量)

    redis的集群原理

    一致性哈希算法:对2的32次方取模,将哈希值空间组织成虚拟的圆环,然后在根据 redis服务器的各种参数(比如ip地址,名称)使hash计算出哈希值,映射到圆环上的位置。然后查询的key使用相同的函数hash计算出哈希值,顺时针查找第一个节点为要使用的redis服务器。

    如果发生宕机就会跳过宕机机器查找下个机器节点,如果新增机器节点道理一样

    hash环的数据倾斜问题,这时候一致性hash引入虚拟节点,来分担数据分配不均匀的问题

  • 相关阅读:
    Codeforces 231E
    Practice 15.07.07 计算几何
    Codeforces 552E
    Topcoder SRM 661 (Div.1) 250 MissingLCM
    HDU 4971
    Codeforces Round #306 (Div. 2)
    URAL 1988
    URAL 2032
    ServiceStack.Ormlit 事务
    ServiceStack.Ormlit 使用Insert的时候自增列不会被赋值
  • 原文地址:https://www.cnblogs.com/wangpengtao/p/5757747.html
Copyright © 2020-2023  润新知