Redis教程入门到精通-互联网分布式技术教程(2)

89 阅读5分钟

「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战

6af89bc8gw1f8u41pn2swj205h03ka9w.jpg

接着昨天的继续探讨:

10. Redis的5种数据结构

A、字符串类型string

字符串类型是Redis中最基本的数据结构,它能存储任何类型的数据,包括二进制数

据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。

image.png

B、列表类型list

Redis列表是简单的字符串列表,按照插入顺序排序,元素可以重复。你可以添加一个元素到列表的头部(左边)或者尾部(右边),底层是个链表结构。

image.png

C、 集合类型set

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

image.png

D、哈希类型 hash

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

image.png

E、 有序集合类型zset(sorted set)

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

不同的是zset的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。

image.png

11. Redis的常用操作命令

1)Redis的Key的操作命令

1.1 keys

语法:keys pattern

作用:查找所有符合模式pattern的key.  pattern可以使用通配符。

通配符:

  • *:表示0或多个字符,例如:keys * 查询所有的key。
  • ?:表示单个字符,例如:wo?d , 匹配 word , wood
  • [] :表示选择[]内的一个字符,例如wo[or]d, 匹配word, wood, 不匹配wold、woord

image.png

1.2 exists

语法:exists key [key…]

作用:判断key是否存在

返回值:整数,存在key返回1,其他返回0。使用多个key,返回存在的key的数量。

image.png

1.3 move

语法:move key db

作用:移动key到指定的数据库,移动的key在原库被删除。

返回值:移动成功返回1,失败返回0.

image.png

1.4 ttl

语法:ttl key

作用:查看key的剩余生存时间(ttl: time to live),以秒为单位。

返回值:

  • -1 :没有设置key的生存时间, key永不过期。
  • -2:key不存在

image.png

1.5 expire

语法:expire key seconds

作用:设置key的生存时间,超过时间,key自动删除。单位是秒。

返回值:设置成功返回数字 1,其他情况是 0 。

image.png

1.6 type

语法:type key

作用:查看key所存储值的数据类型

返回值:字符串表示的数据类型

  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)

image.png

1.7 rename

语法:rename key newkey

作用:将key改为名newkey。当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。

当 newkey 已经存在时, RENAME 命令将覆盖旧值。

image.png

2) 字符串类型(string)

  1. 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数

据,序列化后的数据,JSON化的对象甚至是一张图片。

  1. 字符串类型的数据操作总的思想是通过key操作value,key是数据标识,value是我们感

兴趣的业务数据。

2.1 set

语法:set key value

功能:将字符串值 value 设置到 key 中,如果key已存在,后放的值会把前放的值覆盖掉。

返回值:OK表示成功

image.png

image.png

2.2 get

语法:get key

功能:获取 key 中设置的字符串值

返回值:key存在,返回key对应的value;

key不存在,返回nil

image.png

2.3 append

语法:append key value

功能:

  • 如果 key 存在,则将 value 追加到 key 原来旧值的末尾
  • 如果 key 不存在,则将key 设置值为 value

返回值:追加字符串之后的总长度(字符个数)

image.png

2.4 strlen

语法:strlen key

功能:返回 key 所储存的字符串值的长度

返回值:如果key存在,返回字符串值的长度;

key不存在,返回0

image.png

2.5 incr

语法:incr key

功能:将 key 中储存的数字值加1,如果 key 不存在,则 key 的值先被初始化为 0 再执行incr操作。

返回值:返回加1后的key值

image.png

2.6 decr

语法:decr key

功能:将 key 中储存的数字值减1,如果 key 不存在,则么 key 的值先被初始化为 0 再执行 decr 操作。

返回值:返回减1后的key值

image.png

2.7 incrby

语法:incrby key offset

功能:将 key 所储存的值加上增量值,如果 key 不存在,则 key 的值先被初始化为 0 再执行 INCRBY 命令。

返回值:返回增量之后的key值。

image.png

2.8 decrby

语法:decrby key offset

功能:将 key 所储存的值减去减量值,如果 key 不存在,则 key 的值先被初始化为 0 再执行 DECRBY 命令。

返回值:返回减量之后的key值。

image.png

2.9 getrange

语法:getrange key startIndex endIndex

功能:获取 key 中字符串值从 startIndex 开始到 endIndex 结束的子字符串,包括startIndex和endIndex, 负数表示从字符串的末尾开始,-1 表示最后一个字符。

image.png

2.10 setrange

语法:setrange key offsetIndex value

功能:用value覆盖key的存储的值从offset开始。

返回值:修改后的字符串的长度。

image.png

2.11 setex

语法:setex key seconds value

功能:设置key的值,并将 key 的生存时间设为 seconds (以秒为单位)  ,如果key已经存在,将覆盖旧值。

返回值:设置成功,返回OK。

image.png

2.12 setnx

语法:setnx key value

功能:setnx 是 set if not exists 的简写,如果key不存在,则 set 值,存在则不设置值。

返回值:

  • 设置成功,返回1
  • 设置失败,返回0

image.png

2.13 mset

语法:mset key value [key value…]

功能:同时设置一个或多个 key-value 对

返回值:设置成功,返回OK。

image.png

2.14 mget

语法:mget key [key …]

功能:获取所有(一个或多个)给定 key 的值

返回值:包含所有key的列表,如果key不存在,则返回nil。

image.png

2.15 msetnx

语法:msetnx key value[key value…]

功能:同时设置一个或多个 key-value 对,如果有一个key是存在的,则设置不成功。

返回值:

  • 设置成功,返回1
  • 设置失败,返回0

image.png

OK,今天先把这些消化了,明天接着唠......

ceeb653ejw1fabzbex247j206y07xmx6.jpg