Redis数据类型

Redis数据类型

redis使用的是键值对来保存数据

key:全部都是字符串
value:有五种数据类型

key名需要自定义

key名不要太长,否则影响使用效率。
按长度以小到大来查询。
key名也不要太短,最好是有意义的名字。


String(字符串)

string 是redis最基本的类型,一个key对应一个value
字符串在redis中是二进制安全的,所以redis的string类型可以保存任何数据。

比如jpg图片或者json数据。

一个键最大能存储512MB

二进制安全和数据安全是没有关系的。

MySQL-关系型数据库,二进制不安全。

Redis编码及解码只会发生在客户端,没有频繁编解码,执行效率很高。
没有频繁编解码,不会出现乱码。

常用命令

  • set key value赋值,如果赋予相同的key值,新的value会覆盖老的value。
  • get key取值,若key不存在,就返回nil
  • del key删除指定key。
  • getset key value先获取该key的值,然后再设置该key的值。
  • incr key将指定的key的value原子性的递增1,若key不存在,初始值为0,incr后增1。
  • decr key将制定的key的value原子性的递减1。
  • append key value拼凑字符串,若key不存在,则创建key。返回拼接后字符串的长度。
  • incrby key increment将指定的key的value原子性增加increment。
  • decrby key decrement将指定的key的value原子性减少increment。

使用环境

  • 主要用于保存json格式的字符串。

Hash(哈希)

一个键值对(key=》value)集合

Redis hash是一个string类型fieldvalue的映射表。hash特别适用于存储对象。

每个hash可以存储2的32次方-1个键值对(40多亿)

占用的磁盘空间极少。

常用命令

  • hset key field value为指定的key设置field/value对。
  • hmset key field value [field2 value2...]设置keyzhong多个键值对
  • hget key field返回指定key中的field值。
  • hmget key field1 field2返回指定field的value。
  • hgetall key返回全部键值对。
  • hdel key field1删除key中的field1字段。若key中只有一个field1字段,那么key将会被直接删除。
  • del key删除整个key。
  • hincrby key field increment若field的value数字,那么自增1。
  • hexists key field判断某字段是否存在。
  • hlen key获取key包含有多少字段。
  • hkeys key获取所有的字段。
  • hvals key获取所有的字段值。

List

Redis列表是最简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部和尾部。
链表 添加删除效率极高。

Set

Redis的Set是string类型的无序集合。

可以理解为HshaSet
集合是通过哈希表实现的,所以添加、删除,查找的复杂度都是O(1)

sadd

添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

zset

Redis zset和set一样都是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数

redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数却可以重复。

posted @ 2018-04-19 20:26  Honyelchak  阅读(156)  评论(0)    收藏  举报