0%

redis字符串和哈希

每次有人问redismemcached好在哪里的时候,自己都能bulabula的说出一堆,其中肯定少不了redis支持的数据类型多(string list set zset hash)等。然并卵,对于每一种数据类型的特点和各自的应用场景并不是很熟,比如有人问redis中字符串和哈希的区别和应用场景,支支吾吾的说不清楚,特此记录!

一、hash

  1. 使用hash可以将数据放在同一个地方方便管理,而不必用字符串将数据放在整个数据库,而且还可以避免误操作
  2. 使用hash散列既可以减少创建键的数量又可以避免键名冲突
  3. 使用hash散列比使用字符串键更节约内存,因为在数据库中创建key都有数据库附加的管理信息(如键的类型、最后一次访问时间等),所以key越多服务器在存储附加管理信息方面消耗的内存就越多,同时花在管理数据库中key的cpu也会越多
  4. redis会对hash的存储做一些底层的优化,内存消耗更少

二、string

  1. 使用过期功能,redis的过期功能只能对键进行操作而不能对散列键的field进行操作
  2. 对二进制存储的命令,因为redis目前只支持对字符串键进行setbit/getbit/bitop等二进制相关的命令操作