Redis的五种数据结构

  • Post author:
  • Post category:其他

1. Redis的五种数据结构

在这里插入图片描述

Redis 可以存储键和五种不同类型的值之间的映射。的类型只能为字符串值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

程序是用来处理数据的,redis是用来存储数据的,程序处理完的数据要存储到redis中,不同特点的数据要存储在redis中不同类型的数据结构中。

字符串:         单key: 单value
list列表: 有序可重复     单key: 多有序value(这里的有序指的是输入和输出的顺序)
set集合: 无序不可重读   单key: 多个无序value
pojo           hash 单key : 对象(属性:值)
             zset 单key: 多有序value(这里的有序指的是排序)

  1. 字符串类型String

字符串类型是Redis中最基本的数据结构,它能存储任何类型的数据,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。

  1. 列表类型list

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

  1. 集合类型set

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

  1. 哈希类型hash

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

  1. 有序集合类型zset (sorted set)

Redis有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是zset 的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。

是实现了sortedset接口的TreeSet集合,利用比较器实现排序

2. redis中的操作命令

redis中存储的Key-Value

2.1 redis中有关key的操作命令:

2.1.1 查看数据库中所有的key : keys pattern

作用:查找所有符合模式pattern的 key。 pattern可以使用通配符通配符:
*:表示0或多个字符,例如: keys*查询所有的 key。
?:表示单个字符,例如: wo?d,匹配word , wood
[]:表示选择[]内的一个字符,例如 wo[or]d,匹配word, wood,不匹配wold、woord

keys *: 查看数据库实例中所有的key
keys k*:查看数据中所有以k开头的key
keys h*o:查看数据中所有以h开头以o结尾的key

keys h[abc]llo:查看数据中所有以h开头以llo结尾,并且h后边只能取abc中的一个字符的key

2.1.2 判断key在数据库中是否存在:exists key

exists key
如果存在,返回1;如果不存在,则返回0

exists key [key key .....] 返回值是存在的可以的数量

2.1.3 移动指定key到指定的数据库实例: move key index

move k 1
用的很少,一般情况下,一个数据库实例对应一个项目,这种转移key到另外一个数据库实例中用的很少

2.1.4 查看指定key的剩余生存时间:ttl

time to live
ttl k1 查看k1的剩余生存时间
如果k1不存在返回-2.
如果k1没有设置生存时间返回-1,只要不宕机数据一直存在

2.1.5 设置key的最大生存时间:expire key seconds

expire k2 20 给k2设置生存时间20s,,,到时间数据消失

2.1.6 查看指定key的数据类型 type key

type k1
返回当前数据类型

2.1.7 重命名key: rename key newkey

rename k1 k2 把k1更改为k2,,,值不变只是重命名了key

2.1.8 删除key : del key

del key 删除指定key的数据,返回值是实际删除key的数量
也可以删除多个数据
del k1 k2 k3 .... 删除多条数据

2.2 redis中有关String数据类型的操作命令

2.2.1 将string类型的数据设置redis中:set 键 值

set zsname zhangsan
set zsage 20
set totalRows 100

2.2.2 从redis中获取string类型的数据:get 键

get zsname
get zsage
get totalRows

2.2.3 追加字符串:append key value

set phone 1388888 添加key-value
append phone 6666 在key=phone的值中追加6666,返回追加之后的字符串长度
如果key不存在,则创建key-value

2.2.4 获取字符串数据的长度:strlen key

strlen phone 获取字符串的长度

2.2.5 将字符串值进行加1运算:incr key

incr zsage 将张三的年龄值加1 ,返回加1运算之 后的值

如果key不存在,首先设置一个key,值初始化为0,然后进行incr运算

要求key所表示value必须是数值,否则,报错
incr zsname 报错

2.2.6 将字符串数值进行减1运算:decr key

  • 返回减1运算之后的数据
  • 如果key不存在,首先设置一个key,值初始化为0,然后进行decr运算。
  • 要求key所表示value必须是数值,否则,报错

2.2.7 将字符串数值进行加offset运算:incrby key offset

incrby key offset

  • 返回加offset运算之后的数据
  • 如果key不存在,首先设置一个key,值初始化为0,然后进行incrby运算。
  • 要求key所表示value必须是数值,否则,报错

incrby zsage 10 对张三数据进行加10运算,

2.2.8 将字符串数值进行减offset运算:decrby key offset

  • 返回加offset运算之后的数据
  • 如果key不存在,首先设置一个key,值初始化为0,然后进行decrby运算。
  • 要求key所表示value必须是数值,否则,报错

decrby zsage 10 对张三数据进行减10运算

2.2.9 闭区间截取字符串:getrange key startIndex endIndex

截取下标是从0开始,闭区间截取
从左往右下标是0,1,2,3…
从右往左下标是-1,-2,-3 …
zhangsan
getrange zsname 2 3 返回结果是an

gettrange zsname 2 -3 返回结果 angs

2.2.10 用value覆盖从下标为startIndex开始的字符串:setrange key startIndex value

zhangshan
setrange zsname 5 xiaoming 修改之后的数据为zhangxiaoming


版权声明:本文为qq_45896330原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。