当前位置:首页 » 《随便一记》 » 正文

【Redis】十大数据类型(上篇)

25 人参与  2023年05月05日 08:41  分类 : 《随便一记》  评论

点击全文阅读


文章目录

概述命令官网Key命令Redis 的过期时间设置有四种形式: redis字符串(String)最最常用 `set key value`常用命令图示多值设置 `mset`、`mget`获取指定区间范围内的值 `getrange`、`setrange`数值增减 `INCR key`、`DECR key`获取内容长度及内容追加 `STRLEN key`、`APPEND key xxx`动态设置过期时间,分布式锁先弹出老值,再建新值 `getset` redis列表 (List)常用命令图示`lpush/rpush/lrange``lpop/rpop`按照索引下标获得元素(从上到下) `lindex`获取列表中的元素个数 `llen`根据值删除 `lrem key 数字N 给定值v1`截取索引范围内的,相当于删除索引外的 `ltrim key 开始index 结束index`移除列表的最后一个元素,并将该元素添加到另一个列表并返回`keyrpoplpush 源列表 目的列表`按照索引修改列表的元素 `lset key index value`在已有的值前面/后面插入新的值 `linsert key before/after 已有值 插入的新值` redis哈希表(Hash)常用命令图示`hset/hget/hmset/hmget/hgetall/hdel``hlen KEY`,获取hash内的kv键值对个数`hexists KEY 在KEY里面的某个值的key` 判断某个值在不在里面`hkeys/hvals KEY` 单独罗列key、单独罗列key对应的值`hincrby/hincrbyfloat` 增加`hsetnx KEY key value` 不存在赋值,存在了无效应用:购物车 redis集合 (Set)常用命令说明添加元素`SADD key member [member...]``SMEMBERS key` 遍历集合中的所有元素`SISMEMBER key member` 判断元素是否在集合中`SREM key member [member ...]` 删除元素`scard key` 统计集合里面的元素个数从集合中随机展现设置的数字个数元素,元素不删除 `SRANDMEMBER key [数字]``SPOP key [数字]` 从集合中随机弹出一个元素,出一个删一个`smove key1 key2 在key1里已存在的某个值` 将key1里已存在的某个值赋给key2**重要,集合运算**应用:共同好友、推荐 redis有序集合 (ZSet)常用命令图示添加元素 `ZADD key score member [score member ...]`按照元素分数从小到大的顺序遍历出来 `ZRANGE key start stop [WITHSCORES]`倒序 `zrevrange``ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]` 获取指定分数范围的元素`ZSCORE key member` 获取元素的分数`ZCARD key` 获取集合中元素的数量`zrem key 某score下对应的value值` 作用是删除元素增加某个元素的分数`ZINCRBY key increment member`获得指定分数范围内的元素个数`ZCOUNT key min max`ZMPOP从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对`zrank key values值`,作用是获得下标值`zrevrank key values值`,作用是**逆序**获得下标值应用:根据商品销售对商品进行排序显示

概述

在这里插入图片描述
在这里插入图片描述

命令官网

英文版:https://redis.io/commands/中文版:http://redis.cn/commands.html/

Key命令

命令不区分大小写,但是key区分

命令说明
keys *查看当前库所有的key
exists key判断某个key是否存在,返回1表示存在,返回0表示不存在
type key查看你的key是什么类型
del key删除指定的key数据
unlink key非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作
ttl key查看还有多少秒过期,-1表示永不过期,-2表示已过期
expire key 秒数给定的key设置过期时间
move key dbindex【0-15】将当前数据库的 key移动到给定的数据库 db 当中
select dbindex切换数据库[0-15] ,默认为0,配置文件中databases 16
dbsize查看当前数据库key的数量
flushdb清空当前库
flushall通杀全部库

Redis 的过期时间设置有四种形式:

EXPIRE 秒——设置指定的过期时间(秒),表示的是时间间隔。PEXPIRE 毫秒——设置指定的过期时间,以毫秒为单位,表示的是时间间隔。EXPIREAT 时间戳-秒——设置指定的 Key 过期的 Unix 时间,单位为秒,表示的是时间/时刻。PEXPIREAT 时间戳-毫秒——设置指定的 Key 到期的 Unix 时间,以毫秒为单位,表示的是时间/时刻。

redis字符串(String)

string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

最最常用 set key value

set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]

在这里插入图片描述
在这里插入图片描述

常用命令图示

在这里插入图片描述
在这里插入图片描述

多值设置 msetmget

mset 同时设置一个或多个 key-value 对 mget 获取所有(一个或多个)给定 key 的值

获取指定区间范围内的值 getrangesetrange

getrange

类似between…and的关系

从零到负一表示全部 setrange

设置指定区间范围内的值,格式是setrange key值 具体值
起到覆盖

数值增减 INCR keyDECR key

一定要数值类型数据

INCR key

递增

INCR key increment DECR key

递减

DECR key increment

获取内容长度及内容追加 STRLEN keyAPPEND key xxx

STRLEN key

长度

APPEND key xxx

内容追加

动态设置过期时间,分布式锁

SETEX key 秒数 value
在这里插入图片描述key不存在时才设置 SETNX key value
在这里插入图片描述

先弹出老值,再建新值 getset

在这里插入图片描述

redis列表 (List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
它的底层实际是个双端链表,最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

常用命令图示

在这里插入图片描述
在这里插入图片描述

lpush/rpush/lrange

没有rrange

在这里插入图片描述

lpop/rpop

出栈,弹出元素

在这里插入图片描述

按照索引下标获得元素(从上到下) lindex

在这里插入图片描述

获取列表中的元素个数 llen

在这里插入图片描述

根据值删除 lrem key 数字N 给定值v1

解释(删除N个值等于v1的元素),LREM list3 0 值,表示删除全部给定的值。零个就是全部值

在这里插入图片描述

截取索引范围内的,相当于删除索引外的 ltrim key 开始index 结束index

截取指定索引区间的元素,格式是ltrim list的key 起始索引 结束索引

在这里插入图片描述

移除列表的最后一个元素,并将该元素添加到另一个列表并返回keyrpoplpush 源列表 目的列表

在这里插入图片描述

按照索引修改列表的元素 lset key index value

在这里插入图片描述

在已有的值前面/后面插入新的值 linsert key before/after 已有值 插入的新值

在这里插入图片描述

redis哈希表(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)
本质就是KV,K不变的情况下,V拆分新的kv

常用命令图示

在这里插入图片描述

hset/hget/hmset/hmget/hgetall/hdel

增、查、批量增、批量查、查全部(python的dick.items())、删除

在这里插入图片描述

hlen KEY,获取hash内的kv键值对个数

hexists KEY 在KEY里面的某个值的key 判断某个值在不在里面

存在返回1,不存在返回0

hkeys/hvals KEY 单独罗列key、单独罗列key对应的值

hincrby/hincrbyfloat 增加

在这里插入图片描述

hsetnx KEY key value 不存在赋值,存在了无效

不存在赋值,存在了无效

在这里插入图片描述

应用:购物车

新增商品 → hset shopcar:uid1024 334488 1新增商品 → hset shopcar:uid1024 334477 1增加商品数量 → hincrby shopcar:uid1024 334477 1商品总数 → hlen shopcar:uid1024全部选择 → hgetall shopcar:uid1024

在这里插入图片描述

redis集合 (Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable。
Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

常用命令说明

在这里插入图片描述

添加元素SADD key member [member...]

在这里插入图片描述

SMEMBERS key 遍历集合中的所有元素

SISMEMBER key member 判断元素是否在集合中

SREM key member [member ...] 删除元素

scard key 统计集合里面的元素个数

从集合中随机展现设置的数字个数元素,元素不删除 SRANDMEMBER key [数字]

SPOP key [数字] 从集合中随机弹出一个元素,出一个删一个

smove key1 key2 在key1里已存在的某个值 将key1里已存在的某个值赋给key2

重要,集合运算

集合的差集运算 A - B =》 SDIFF set1 set2集合的并集运算 A U B = 》 SUNION set1 set2集合的交集运算 A n B =》 SINTER set1 set2SINTERCARD numkeys key [key ...] [LIMIT limit]
>

应用:共同好友、推荐

在这里插入图片描述

redis有序集合 (ZSet)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1

常用命令图示

在这里插入图片描述
在这里插入图片描述

添加元素 ZADD key score member [score member ...]

在这里插入图片描述

按照元素分数从小到大的顺序遍历出来 ZRANGE key start stop [WITHSCORES]

WITHSCORES 参数不带,会返回值,带了的话会连同分数一起返回
返回索引从start到stop之间的所有元素0

倒序 zrevrange

在这里插入图片描述

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 获取指定分数范围的元素

limit是返回的数量,与mysql分页相似 ZRANGEBYSCORE zset1 60 90 withscores limit 0 1

在这里插入图片描述

ZSCORE key member 获取元素的分数

ZCARD key 获取集合中元素的数量

zrem key 某score下对应的value值 作用是删除元素

在这里插入图片描述

增加某个元素的分数ZINCRBY key increment member

获得指定分数范围内的元素个数ZCOUNT key min max

ZMPOP从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对

在这里插入图片描述

zrank key values值,作用是获得下标值

zrevrank key values值,作用是逆序获得下标值

应用:根据商品销售对商品进行排序显示

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/60813.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1