Redis命令总结与使用

作者: 先生zeng | 来源:发表于2019-08-29 09:11 被阅读0次

    ​ Redis的一些全局命令、数据结构和内部编码、单线程命令处理机制是十分有必要的,主要体现在两个方面:第一、Redis的命令有上百个,如果纯靠死记硬背比较困难,但是如果理解Redis的一些机制,会发现这些命令有很强的通用性。第二、Redis不是万金油,有些数据结构和命令必须在特定场景下使用,一旦使用不当可能对Redis本身或者应用本身造成致命伤害。

    全局命令

    1.keys * 查看所有的键
    
    2.dbsize 查看键的总数
    
    区别:计算键总数时不会遍历所有键,而是直接获取Redis内置的键总数变量,
    所以dbsize命令的时间复杂度是O(1)。而keys命令会遍历所有键,所以它的时间复杂度是O(n),
    当Redis保存了大量键时,线上环境禁止使用
    
    3.exists key 检查键是否存在,键存在则返回1,不存在则返回0
    
    4.del key    删除键 一个通用命令,无论值是什么数据结构类型,都可以将其删除,
                 返回结果为成功删除键的个数
    
    5.expire key seconds 设置键过期的时间。
    
    6.ttl   命令会返回键的剩余过期时间,它有3种返回值:
            ·大于等于0的整数:键剩余的过期时间。
            ·-1:键没设置过期时间。 
            ·-2:键不存在可
            
    7.type key 键的数据结构类型,如果键不存在,则返回none
    

    数据结构和内部编码

    type命令实际返回的就是当前键的数据结构类型,它们分别是:
    string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合),但这些只是Redis对外的数据结构,实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样Redis会在合适的场景选择合适的内部编码.


    内部编码


    Redis这样设计有两个好处:第一,可以改进内部编码,而对外的数据结构和命令没有影响,
    这样一旦开发出更优秀的内部编码,无需改动外部数据结构和命令,例如Redis3.2提供了quicklist,
    结合了ziplist和linkedlist两者的优势,为列表类型提供了一种更为优秀的内部编码实现,
    而对外部用户来说基本感知不到。第二,多种内部编码实现可以在不同场景下发挥各自的优势,
    例如ziplist比较节省内存,但是在列表元素比较多的情况下,性能会有所下降,
    这时候Redis会根据配置选项将列表类型的内部实现转换为 linkedlist。
    

    待续。。。

    相关文章

      网友评论

        本文标题:Redis命令总结与使用

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