zoukankan      html  css  js  c++  java
  • redis之(二十)redis的总结一

    1 什么是Redis

    Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。

    Redis的特点:

    • Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
    • 具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
    • 设置TTL存活时间,到期自动删除。
    • Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
    • 可以将数据复制到任意数量的从服务器。

    2 Redis中的数据结构

    字符串

    • SET keyname value 设置键值keyname的值是value
    • KEYS * 获取所有的键值
    • GET keyname 获取keyname的值
    • EXISTS keyname 判断是否存在键值keyname
    • DEL keyname 删除键值keyname
    • TYPE keyname 判断keyname的类型(string字符串,hash哈希表,list列表,set集合,zset有序集合)

    哈希表

    • HSET keyname key value 添加一个哈希属性和值
    • HGET keyname key 获取值
    • HKEYS keyname 获取全部的key值
    • HVALS keyname 获取全部的value值
    • HGETALL keyname 获取所有的值

    列表

    通过双向链表实现,头尾操作均为O(1),获取指定元素比较慢。

    • LPUSH keyname value1或者LPUSH keyname value1 value2 在左边插入
    • RPUSH keyname value2 在右边插入
    • LRANGE keyname 0 -1 查询所有的元素
    • LPOP keyname
    • RPOP keyname

    集合

    元素唯一,但是没有顺序。使用值为空的哈希表实现,操作都是O(1)。

    • SADD keyname value1 value2 添加值
    • SREM keyname value1 删除
    • SMEMBERS keyname查询所有元素

    有序集合

    使用哈希和跳跃表实现,中间速度也很快。

    • ZADD keyname key value 添加
    • ZRANGE keyname start end 获取指定范围的元素

    与列表的比较:

    相同:

    • 都是有序的
    • 都可以获取某一范围的元素

    不同:

    • 列表通过双向链表实现,两端数据存取极快,中间缓慢
    • 有序集合通过哈希和跳跃表实现,中间速度也很快,为O(log(N))
    • 列表不能简单地调整某个元素的位置,有序集合可以
    • 有序集合比列表更好费内存

    3 Redis持久化

    Redis提供了两种持久化方式:1 RDB快照方式 2 AOF方式

    RDB方式:

    满足一定条件时,会创建一个子进程,复制当前的数据,把数据写入到硬盘中某个文件,写入完成后替换原来的存储文件。数据一般存储在dump.rdb中。UNIX系统中支持写时复制,即刚开始会执行持久化写入磁盘的操作,如果此时有其他的数据发生改变,就复制一份数据执行。

    除了这种自动的快照方式,还支持命令方式持久化:

    • SAVE:通过阻塞的方式,用父进程来持久化,此时无法执行其他的请求。
    • BGSAVE:通过fork子进程的方式,持久化。

    AOF方式:

    每次操作都会记录命令,这样会造成某些命令的冗余,比如添加了一个属性,再删除,那么这两个操作都是冗余的。redis提供了一些优化,所以可以避免这些冗余信息。命令记录在appendonly.aof中

    4 Redis的消息队列

    Redis用于消息队列,通常有两种种使用方式:

    LIST:基于列表的方式,所有的消费者数据加起来是列表中的所有数据.

    发布/订阅:每个消费者订阅独立的channel,每个数据都是独立的。

  • 相关阅读:
    Vulkan Tutorial 06 逻辑设备与队列
    Vulkan Tutorial 05 物理设备与队列簇
    过滤器Filter(2)
    Filter过滤器(1)
    Java-Web监听器
    Filter案例
    <context:annotation-config/>
    @Autowired 和 @Resource
    Hibernate各种主键生成策略与配置详解
    eclipse新建workspace使用之前workspace的个性配置
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/5553913.html
Copyright © 2011-2022 走看看