美文网首页redisRedis 学习Redis
Redis-data structures server 常用命

Redis-data structures server 常用命

作者: michael_jia | 来源:发表于2016-10-31 14:37 被阅读84次

    Redis编译安装 和初步使用都很简单,考验的还是对数据结构的理解;对应不同的问题选择合适的数据类型来解决;有时间可以多看看 Redis 所实现的 各种命令

    Redis,本质上,是一个 data structures server,即数据结构服务器,所谓的数据结构,就是数据的一种特定组织方式,比如 hash(哈希表,即散列)、list(链表)、set(集合)、zset(sorted set,有序集合);Redis 实现了以上所有的数据结构的存取访问(把 Redis 称为 key-value 存储系统是对 Redis 的一种最粗浅简单的认知);Redis 和 MySQL 一起构成了 Web 开发必不可少的两个高性能数据存储服务,值得好好使用;

    • 支持丰富的数据类型;
      特定的数据类型对于解决特定的问题来说,更容易理解、也更简单、更易维护;
      应用场景非常多:缓存、消息、队列、会话、计数;
    • 从网络存取角度认识 Redis,实现了简单、丰富的 存取命令
    • 从持久化角度认识 Redis,可以堪比 MySQL;
    • 从可用性角度认识 Redis,类似于 MySQL bin log 机制所建立的 Master/Slave 主从关系很牢靠;实现了可扩展性和高可用性;
      支持多级主从关系:Slaves are able to accept connections from other slaves.
    • 从接口语言便利性认识 Reids,支持广泛,几乎任何语言都有实现;
    • 如果你熟悉 memcached
      memcached 是一个简单的 string 和 object 的缓存,没有那么多数据结构(数据类型);仅从这一点,就和 Redis 不在一个数量级上;
      仅从缓存性能看,Redis 也远胜于 memcached 的服务;

    Redis means REmote DIctionary Server.

    命令小记(命令字大写)

    • KEYS
      KEYS pattern:list of keys matching pattern;
      命令行计算符合 pattern 的 key 的个数:redis-cli KEYS "abc:*" | wc -l
      基于性能考虑,建议慎用;
    • INFO
      returns information and statistics about the server; 在 Keyspace section 有各个 database 的统计;
      INFO keyspace:方便查看各个库关于 key space 的基本情况;
    • DBSIZE
      Return the number of keys in the currently-selected database.
    • TYPE
      TYPE key
    • SORT
      SORT key BY nosort GET #
    • SCANSCAN cursor [MATCH pattern] [COUNT count] 遍历元素,支持匹配模式;
      iterates the set of keys in the currently selected Redis database.(遍历当前库的所有 key);
      The SCAN command and the closely related commands SSCAN, HSCAN and ZSCAN are used in order to incrementally iterate over a collection of elements.
    string
    • SETSET key value,这样的 key 的类型为 string;
    • STRLEN
    hash 哈希(散列 | 字典)
    • HSETHSET key field value
      hash 适合存储一条表记录(记录 id 做 key)的各个字段名值对 field => value;
    • HKEYSHKEYS key
      Returns all field names in the hash stored at key.
      列出所有字段名,有时会混淆 key and field;
      如果和 HVALS 相对,这个命令使用 hfields 更好;
    • HGETALLHGETALL key
      Returns all fields and values of the hash stored at key.
    • HLENHLEN key
      Returns the number of fields contained in the hash stored at key.
    列表 list(列表是有序的)
    • LPUSH
      列表 list 的命令;
    • LLEN
    • LRANGELRANGE key start stop
      Returns the specified elements of the list stored at key.
    集合 sets 的命令(以 SADD 为代表)
    • sets 集合:一堆不重复值的组合;
    • SADDSADD key member [member ...]
      集合由一个一个的 member 组成;
    • SCARDSCARD key
      Returns the set cardinality (number of elements) of the set stored at key.
      返回 member 个数;
    • SMEMBERSSMEMBERS key
      Returns all the members of the set value stored at key.
      返回集合所有的 member 值;
    有序集合 sorted sets 的命令(以 ZADD 为代表)
    • 和 sets 相比,sorted sets 是将 set 中的 member 增加了一个权重参数 score,使得集合中的 member 能够按 score 进行有序排列;
    • 对照普通集合 sets 来了解有序集合 sorted sets 的命令是很有意思的;
      例如:ZADDZCARDZRANGE
    关于 EXPIRE
    • EXPIREEXPIRE key seconds 设置过期时间;
      设置 0 秒或者负值表示立刻过期;
    • TTLTTL key 查看还有多长时间过期;
      -1 表示未设过期;-2 表示 key 不存在;
    • PERSISTPERSIST key
      立刻取消过期时间的设置,变为永久存在;
    • OBJECTOBJECT IDLETIME <key> 可以查看 key 空闲多长时间(秒)了,可以换算出最后一次访问时间;
    • DEBUG OBJECTDEBUG OBJECT key
      这个命令也很有帮助,lru_seconds_idle 就是空闲秒数;
      为了安全,生产环境通常在配置文件中使用 rename-command 配置指令重命名这些命令名字:CONFIG、FLUSHDB、FLUSHALL、DEBUG;
    • MONITOR 实时显示 redis-server 处理的每个命令;
    关于 CONFIG

    CONFIG 是一组命令,通过 CONFIG GET 进一步了解;

    使用何种数据类型?

    参考文档

    • Redis repository @ GitHub;
    • db-engines.com 排名;
      根据统计,Redis 在键值数据存储引擎的排名中位于第一名,很受欢迎。
    • 性能对比

    相关文章

      网友评论

        本文标题:Redis-data structures server 常用命

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