《Redis 数据操作》

一:字符串类型(string)

  - 应用场景

     - 用于常规计数,常规的 key-value 存储

  - 常用操作

    • 常用操作
      
      设置一个值为(字符串类型) SET key value

      设置一个值并设置过期时间 SETEX key time value 取出一个值为(字符串类型) GET key 递增数字 INCR key 获取字符串长度 STRLEN key

二:散列类型 (HASH)

  - 应用场景

    - 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 

    - 存储部分变更的数据,如用户信息等。

    - 对于将对象存储成字符串而言,hash会占用更少的内存,并且可以更方便的存取整个对象.

  - 常用操作

    • 设置一个值为(HASH类型) HSET key field value
      
      取出一个值为(HASH类型) HGET key field
      
      一次获取多个值 HMGET key field [field ...]
      
      获取该HASH的全部字段和字段值 HGETALL key
      
      判断字段是否存在 HEXISTS key field
      
      当字段不存在时赋值 HSETNX key field value
      
      删除字段 HDEL key field [filed ....]
      
      只获取该字段名(全部) HKEYS key
      
      只获取该字段值(全部) HVALS key

三:列表 (LIST)

  - 应用场景

    - 由于 列表(list) 内部是由双向链表实现的,所以从头和尾获取和插入/读取是非常快的。

    - 不过也正是因为如此,通过索引获得元素的速度会很慢

    - 由于 LIST 的特性,更适合做日志存储,消息队列等功能。

  - 常用操作

    • 向列表左端增加元素(列表类型) LPUSH key value
      
      向列表右端增加元素(列表类型) RPUSH key value
      
      从左端取出一个元素(等于在这个list中删除了这个元素) LPOP key
      从右端取出一个元素(等于在这个list中删除了这个元素) LPOP key
      
      获得列表的总个数 LLEN number
      
      获取列表片段 LRANGE key start stop
      
      删除列表中的值 LREM key count value
        - 当 count > 0 时候,从列表左边删除 count 个 值为 value 的元素。
        - 当 count < 0 时候,从列表右边删除 count 个 值为 value 的元素。
        - 当 count = 0 时候,删除列表中所有值为 value 的元素。
      
      通过索引查找元素,就和数组一样 LINDEX key index
      
      通过索引为元素赋值 LSET key index value

四:集合 (SET)

  - 应用场景

    - 对于集合(set)来说,是无序但是有唯一性的,列表(list)是有序但是不唯一的

    - 内部由 hash table 实现

    - set 就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的set数据结构,可以存储一些集合性的数据。set中的元素是没有顺序的。

   

  - 案例

    - 在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。

    - Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

  - 常用操作

    • 向集合添加一个或者多个元素 SADD key member [member ...]
      
      在集合内删除一个或者多个元素 SERM key member [member ...]
      
      获取集合内所有元素 SMEMBERS key
      
      查看集合内是否有该元素 SISMEMBER key member
      
      差级运算 SDIFF key [key ...] 例如 {123} - {234} = {1} 
      
      交集运算 SINTER key [key ...] 例如 {123} - {234} = {23}
      
      并集运算 SUNION key [key ...] 例如 {123} - {234} = {1234}
      
      获取集合中的个数 SCARD key

五:有序集合 (SORT SET)

  - 有序集合和集合相比

    - 有序集合(sorted set)增加了一个权重参数score。

  - 有序集合和列表相比

    - 二者都是有序的,都可以获得范围元素

    - 有序集合比列表更费内存

    - 有序集合是通过散列表和跳跃表实现的(这个目前不太懂)。

    - 列表中不能随意调整某个元素的位置,但是有序集合可以。

  - 应用场景

    - 比如要对一个学生的成绩排序,那么key就可以是学号,socore就可以是分数,那么在一进入队列时候,就已经进行了天然的排序。

    - 还可以用在有权重的队列上面,权重高的对列任务先执行。

  - 基本操作

    • 添加一个有序元素 ZAAD key score member
      获得一个元素的分数 ZSCORE key score
      获得排序之后的集合 ZRANGE key start stop

六:事务

  - Redis 里面的事务也是和命令一样,都是最小的执行单位。但是和数据库事务不同的是,Redis的事务不会被其他命令插入。一个事务是肯定会完成的。

  - 需要注意的是,在事务中

    - 如果出现了语法错误(指令不存在/命令错误...),那么错误指令之后的命令都不会执行。之前会执行。

    - 如果出现了错误的命令,比如使用散列的命令操作集合,Redis 也不会认为这是错误。会继续执行。

    - 但是不管出现了如上哪两种,都是会导致数据的异常,而Redis没有回滚机制,错了就是错了。

    - 为了避免错误,在使用时一定要注意使用的细节。

  

  - 基本语法

    • MULTI 开始事务
      
      EXEC 执行事务

七:过期时间

  - 设置过期时间之后,在使用SET,会消除这个键的过期时间,变为永久键

  - 基本语法

    • EXPIRE 键 时间(秒)
      PERSIST 键 (清除过期时间,即变为永久的)
原文地址:https://www.cnblogs.com/25-lH/p/9323794.html