redis介绍

作者: 进步源于积累 | 来源:发表于2019-01-02 14:41 被阅读0次

    五种数据类型

    String:命令-set\get\del\

    list:命令-rpush\lrange\lindex\lpop

    set:命令-sadd\smembers\smember\srem

    hash:命令-hset\hgetall\hdel\hget

    zset:命令-zadd\zrange\zrangebyscore\zrem

    适合场景

    1.计数器 String可进行自增减。Redisp这种内存数据库读写性能非常高

    2.缓存 热点数据放到内存中

    3.查找表 查找快的特性。

    4.消息队列 list双向链表,通过 lpop lpush写入读取。可以做,但是还是推荐用消息中间件

    5.会话缓存 redis存多台应用服务器的会话信息

    6.分布式锁 在分布式场景下,无法使用单机锁对多个结点上的进程进行同步。可以用setnx命令实现分布式锁

    7.ZSet可以实现有序性操作,从而实现排行榜等功能

    优势

    1.速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

    2.支持丰富数据类型,支持string,list,set,sorted set,hash

    3.支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

    4.丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

    和memcached相比

    数据类型:m只支持字符串,r支持五种了

    数据持久化:r两种持久策略Rdb aof,m不支持

    分布式:m不支持

    内存管理机制:r很久没用的会放到磁盘。m一直在内存。Memcached 将内存分割成特定长度的块来存储数据,以完全解决内存碎片的问题。但是这种方式会使得内存的利用率不高,例如块的大小为 128 bytes,只存储 100 bytes 的数据,那么剩下的 28 bytes 就浪费掉了。

    回收策略

    volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

    volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

    volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择 数据淘汰

    allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

    allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

    no-enviction(驱逐):禁止驱逐数据

    相关文章

      网友评论

        本文标题:redis介绍

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