美文网首页
分布式缓存-Redis介绍

分布式缓存-Redis介绍

作者: 木子葱葱 | 来源:发表于2020-03-09 18:16 被阅读0次

    缓存的作用

    提升性能、降低数据库压力、减少后端负载、消除数据库热点、IOPS提高吞吐量,最适合读多写少的场景。

    缓存有哪些

    本地缓存:JVM(HashMap/List/concurrentHashMap) ,Google guava Cache
    分布式缓存:memcached,Redis
    我们这里就不再对多种分布式缓存进行对比,后续再完善,这里只描述Redis相关的。

    Redis是单线程为什么还这么快

    RedisI/O多路复用

    1.内存操作
    2.Redis的单线程避免了多线程上下文切换性能损耗的问题
    3.Redis利用epoll实现了I/O多路复用,客户端的请求会被放入队列一次发送到文件事件分发器,由分发器具体分发给对应的时间处理器来执行。

    Redis常用的数据类型

    string ,list , set ,zset ,hash ,geo(地理位置,lbs应用)
    前面五种为常用的。

    Redis常用的命令

    1.string

    setnx key v //当key不存在时,就set一个值
    //原子计数器,这里Redis的原子操作不是cas操作,是服务端的单线程执行,在服务端命令是串行的。所以跟java中的atomic还是有很大的区别的
    incr key //原子操作+1
    incrby key int //原子操作+对应的数字
    decr key //原子操作减1
    decrby key int //原子操作减对应的数字
    

    2.list

    rpush key v1 v2 v3 
    lpop key //模拟queue操作,先进先出
    rpop key //模拟栈操作,现金后出
    

    3.hash

    hset key hkey hv //添加值
    hgetall key //获取整个hash
    hget key hkey //获取某个hash下的一个记录
    

    4.set

    sadd key //添加元素
    smembers key //查看key
    sismember key //检测某个key是否存在
    scard key //count
    spop key //弹出一个值
    

    5.zset

    zadd key score v 
    zrange key 0 -1 //按score排序列出,参数区间为范围排名
    zrevrange key 0 -1 //按score倒序
    zcard key //count
    zrank key //排名
    

    6.其他命令

    key key* //查看所有的key,线上谨慎使用,会被打死
    scan //渐进式查询,用于替代key key*
    scan 0[游标] match key*[正则匹配] count 10[分页数量] //返回的第一个参数会是下一个符合值的游标
    info //查看Redis服务运行信息
    

    Redis的持久化方式

    1.RDB:数据快照,定期备份,故障恢复快,但故障恢复数据会丢失。
    2.AOF:命令集备份,这种方式是Redis将所有的命令都备份了下来,在故障恢复的时候用命令回放的方式重新执行一遍,数据不会丢失,但如果线上数据很大,恢复很慢
    3.建议的使用方式
    RDB+AOF,定期进行RDB的数据快照,在恢复的时候先预加载RDB,然后通过回放增量AOF的方式来恢复数据。

    #开启混合持久化方式
    aof-use-rdb-preamble=yes
    

    相关文章

      网友评论

          本文标题:分布式缓存-Redis介绍

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