Redis学习(一)

1、指令

String类型

赋值

语法:SET key value

取值

语法:GET key

取值并赋值

语法:GETSET key value

 

 

 数值增减

前提条件:

  1. 当value为整数数据时,才能使用以下命令操作数值的增减。
  2. 数值增减都是原子操作

增加指定的整数

 

 

递减同理:

 

 

 仅当不存在时赋值 

注:该命令可以实现分布式锁的功能,后续讲解!!!!

语法:setnx key value

 

 

 向尾部追加值

注:APPEND命令,向键值的末尾追加value。如果键不存在则该键的值设置为value,即相当于set key value。返回值是追加后字符串的总长度。

 

 

 获取字符串长度

注:strlen命令,返回键值的长度,如果键不存在则返回0

 语法:STRLEN key

 

 

 同时设置/获取多个键值

语法:

  1. MSET key value [key value ....]
  2. MGET key [key ....]

 

 

 应用场景之自增主键

需求:商品编号、订单号采用INCR命令生成。

设计:key明明要有一定的设计

实现:定义商品编号key:items:id

 

 

 Hash类型

  Hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其他类型。

 

 

 

赋值 

  HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

一次只能设置一个字段值

语法:HSET key field value

一次设置多个字段值

语法:HMSET key field value [field value ...]

 

当字段不存在时

 

类似HSET,区别在于如何字段存在,该命令不执行任何操作

 

语法:HSETNX key field value

 

 

 取值

一次只能获取一个字段值

语法:HGET key field

 

一次可以获取多个字段值

 

语法:HMGET key field [field ....]

获取所有字段值

语法:HGETALL key

 

  删除字段

可以删除一个或多个字段,返回值是被删除的字段个数

语法:HDEL key field [field ...]

 

 

 增加数字

语法:HINCRBY key field increment

 

 

 判断字段是否存在

语法:HEXISTS key field 存在返回1,不存在返回0

 

 

 只获取字段名或字段值

语法:

  1. HKEYS key
  2. HVALS key

 

 

 获取字段数量

语法:HLEN key

 

 

 

应用之存储商品信息

 

注意事项:存在哪些对象数据,特别是对象属性经常发生增删改操作的数据。

 

商品信息字段

 

  【商品id,商品名称,商品描述,商品库存,商品好评】

 

定义商品信息的key

 

  商品id为1001的信息在Redis中的key为:[items.1001]

 List类型

 

  ArrayList使用数组方式存储数据,所以根据索引查询数据速度快,而新增或者删除元素时需要涉及到位移操作,所以比较慢。

 

  LinkedList使用双向链表方式存储数据,每个元素都记录前后元素的指针,所以插入、删除数据时只是更改前后元素的指针即可,

       速度非常快。然后通过下标查询元素时需要从头开始索引,所以比较慢,但是如果查询前几个元素或后几个元素速度比较快。

 List介绍

 

  Redis的列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获取列表的某一个片段。

 

  列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0/1,获取越接近两端的元素速度就越快。意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

 

向列表两端添加元素

 

向列表左边添加元素

 

 可以看出这个是双向链表

 

 从列表两端弹出元素

LPOP命令从列表左边弹出一个元素,会分两步完成:

  1. 将列表左边的元素从列表中移除
  2. 返回被移除的元素值

语法:

  1. LPOP key
  2. RPOP key

获取列表中元素的个数

语法:LLEN key 

 

 

 删除列表中指定个数的值

  LREM命令会删除列表中前count个数为value的元素,返回实际删除的元素个数。根据count值不同,该命令的执行方式会有所不同。

语法:LREM key count value

  1. 当count>0时,LREM会从列表左边开始删除
  2. 当count<0时,LREM会从列表右边开始删除
  3. 当count=0时,LREM会删除所有值为value的元素

获取/设置指定索引的元素值

获取指定索引的元素值

语法:LINDEX key index

设置指定索引的元素值

语法:LSET key index value

 


 

posted @ 2020-10-27 20:27  suke_123  阅读(127)  评论(0编辑  收藏  举报