当前位置: 首页 > article >正文

【Redis】Redis中的5种基础数据类型详解

文章目录

    • 1. Redis数据结构
    • 2. 基础数据结构详解
      • 2.1 String字符串
      • 2.2 List列表
      • 2.3 Set集合
      • 2.4 Hash散列
      • 2.5 Zset有序集合

1. Redis数据结构

对于Redis来说,所有的key(键)都是字符串,我们一般所讨论的Redis基础数据类型指的是存储的value值的类型,总共包括五种:String字符串、List列表、Set集合、Zset有序集合、Hash散列。
在这里插入图片描述

2. 基础数据结构详解

2.1 String字符串

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

命令使用:

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> set counter 2
OK
127.0.0.1:6379> get counter
"2"

2.2 List列表

本质上就是列表,而且是双端列表。
可以利用List的push操作来添加元素,使用List的pop操作来弹出并获取该元素。
rpush和lpush分别表示将元素添加到列表的右端和左端,rpop和lpop分别表示将从列表的右端和左端弹出并获取元素。
lrange获取列表在给定范围上的所有值。
lindex可以通过索引获取列表上的指定值。

命令使用:

127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379> lindex mylist -1
"1"
127.0.0.1:6379> lindex mylist 10  # index不在 mylist 的区间范围内,所以取不到
(nil)

2.3 Set集合

set集合是一种无序、不重复的数据结构。每次对集合进行遍历时,元素的顺序都可能不同。
set集合中的元素是唯一的,同一个元素不会被重复添加到集合中。
当尝试添加一个已经存在于集合中的元素时,集合不会发生任何变化,也不会报错。
set集合中的元素类型必须相同,也就是说,所有元素都必须是同一种数据类型。如果尝试向set集合中添加不同类型的元素,Redis会返回一个错误。

命令使用:

127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> smembers myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> sismember myset hao
(integer) 1

2.4 Hash散列

Hash在Redis内部是使用一个散列表来实现的,因此它可以快速地插入、删除和查找键值对。
Hash的值可以是字符串、数字或者二进制数据,这使得它可以存储各种类型的数据。
每个hash可以存储多个键值对,每个键值对都有一个唯一的键和一个对应的值。
由于使用了散列表,Hash在Redis中的存储效率非常高,即使存储了大量的键值对也能快速地进行操作。

命令使用:

127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hset user email1 hao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "email1"
4) "hao@163.com"
127.0.0.1:6379> hget user user
(nil)
127.0.0.1:6379> hget user name1
"hao"
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hset user email2 xiaohao@163.com
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "email1"
4) "hao@163.com"
5) "name2"
6) "xiaohao"
7) "email2"
8) "xiaohao@163.com"

2.5 Zset有序集合

zset 中的每个元素都有一个分数(score)与之关联,可以根据分数的大小来进行排序。同时,zset 还提供了根据分数范围或排名范围来获取元素的方法。
zset 中的每个元素都是唯一的,不能有重复的元素。如果需要更新某个元素的分数或者添加一个新元素,可以使用 Redis 提供的相关命令。
zset 支持添加元素、删除元素、获取元素数量、获取指定范围的元素等多种操作,同时还支持交集、并集和差集等多种集合操作。
zset 在 Redis 中被广泛应用于排行榜、计数器、社交网络应用等场景中,其有序性和唯一性特点能够很好地满足这些场景的需求。

命令使用:

127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaohao"
2) "hao"
127.0.0.1:6379> ZSCORE myscoreset hao
"100"

http://www.kler.cn/a/15763.html

相关文章:

  • 2024140读书笔记|《作家榜名著:生如夏花·泰戈尔经典诗选》——你从世界的生命的溪流浮泛而下,终于停泊在我的心头
  • c# 调用c++ 的dll 出现找不到函数入口点
  • paddle表格识别数据制作
  • Python如何获取request response body
  • 微信小程序:vant组件库安装步骤
  • 前端无感刷新token
  • 前端web3入门脚本二:初探dex,在dex完成一笔swap
  • 势能回馈系统超级电容储能系统介绍
  • 浅谈文心一言
  • 生成器的创建方式(py编程)
  • 汇编语言(第3版)- 学习笔记 - 第1章-基础知识
  • 【无标题】c++异常机制的一些总结以及思考
  • HTTPS协议
  • 万万没想到在生产环境翻车了,之前以为很熟悉 CountDownLatch
  • 如果ChatGPT写作论文,保姆及教程以及问题答疑
  • Elasticsearch简单搜索以及聚合分析
  • 软件测试:测试一个网站
  • vue2之echarts的封装 折线图,饼图,大图
  • 合并石子(动态规划)
  • DPDK系列之十六虚拟化virtio源码分析之virtio-user
  • JS手撕代码系列【手写实现Promise】
  • 【Redis16】Redis进阶:内存优化
  • wifi芯片行业信息汇总
  • AcWing55. 连续子数组的最大和
  • 【柒志科技】面经 base上海
  • 了解hiberfil.sys文件:计算机休眠模式的背后