Redis-data structures server 常用命令

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 #
  • SCAN:SCAN 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
  • SET:SET key value,这样的 key 的类型为 string;
  • STRLEN
hash 哈希(散列 | 字典)
  • HSET:HSET key field value
    hash 适合存储一条表记录(记录 id 做 key)的各个字段名值对 field => value;
  • HKEYS:HKEYS key
    Returns all field names in the hash stored at key.
    列出所有字段名,有时会混淆 key and field;
    如果和 HVALS 相对,这个命令使用 hfields 更好;
  • HGETALL:HGETALL key
    Returns all fields and values of the hash stored at key.
  • HLEN:HLEN key
    Returns the number of fields contained in the hash stored at key.
列表 list(列表是有序的)
  • LPUSH
    列表 list 的命令;
  • LLEN
  • LRANGE:LRANGE key start stop
    Returns the specified elements of the list stored at key.
集合 sets 的命令(以 SADD 为代表)
  • sets 集合:一堆不重复值的组合;
  • SADD:SADD key member [member ...]
    集合由一个一个的 member 组成;
  • SCARD:SCARD key
    Returns the set cardinality (number of elements) of the set stored at key.
    返回 member 个数;
  • SMEMBERS:SMEMBERS 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 的命令是很有意思的;
    例如:ZADD,ZCARD,ZRANGE;
关于 EXPIRE
  • EXPIRE:EXPIRE key seconds 设置过期时间;
    设置 0 秒或者负值表示立刻过期;
  • TTL:TTL key 查看还有多长时间过期;
    -1 表示未设过期;-2 表示 key 不存在;
  • PERSIST:PERSIST key
    立刻取消过期时间的设置,变为永久存在;
  • OBJECT:OBJECT IDLETIME 可以查看 key 空闲多长时间(秒)了,可以换算出最后一次访问时间;
  • DEBUG OBJECT:DEBUG OBJECT key
    这个命令也很有帮助,lru_seconds_idle 就是空闲秒数;
    为了安全,生产环境通常在配置文件中使用 rename-command 配置指令重命名这些命令名字:CONFIG、FLUSHDB、FLUSHALL、DEBUG;
  • MONITOR 实时显示 redis-server 处理的每个命令;
关于 CONFIG

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

使用何种数据类型?
  • https://redislabs.com/blog/5-key-takeaways-for-developing-with-redis#.WDBEZKJ96hc
  • http://stackoverflow.com/questions/24847539/redis-key-design
  • http://openmymind.net/Data-Modeling-In-Redis/
  • https://www.quora.com/What-are-5-mistakes-to-avoid-when-using-Redis
  • https://developer.mozilla.org/en-US/docs/Mozilla/Redis_Tips
  • http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html
  • http://antirez.com/news/93
  • https://www.linkedin.com/pulse/5-basic-steps-key-value-store-database-design-laszlo-wagner

参考文档

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

你可能感兴趣的:(Redis-data structures server 常用命令)