Redis基本数据类型

Redis基本数据类型和函数 Redis基本命令 1、Redis数据类型 Redis有string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(有序集合)五种数据类型 1.1、String(字符串) string类型是Redis的最基本的数据类型,string类型的值最大能存储512MB。 可以存储任何数据,结构是一个key对应一个value。 1.1.1、基本语法 COMMAND key_name 1.1.2、基本命令 SET key value 设置指定key的值。 服务器:0>set abc 阅读详情

一、Redis介绍

Redis是用C语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。

二、为什么要用Redis做缓存?

简单来说,主要是为了提升用户体验以及让更多的用户可以使用。
1)高性能方面:
如果用户第一次读取数据的话,这个过程是比较慢的,因为需要从硬盘里读取。
但是如果不是第一次读取数据,读取高频数据的话,就可以吧数据放到缓存里去让用户访问。

好处:这样用户就可以直接操作内存,不需要从硬盘里读取数据,速度非常快。
不过,要保持数据库里的数据与缓存里的数据一致性。如果数据库里数据改变,需要改变缓存里的数据。

2)高并发方面:
一般像MySQL这样的数据库QPS大概在1w左右(4核8G),而redis缓存可以达到10W+,最高可以达到30W。(就单机 redis 的情况,redis 集群的话会更高)。
QPS(Query Per Second):服务器每秒可以执行的查询次数;

所以,直接操作缓存能够承受的数据库请求数量是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。我们也就提高的系统整体的并发。

三、Redis常用数据结构

1)String型

string型数据结构是key-value型的。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种 简单动态字符串。

常用命令 set,get,strlen,exists,dect,incr,setex等。

127.0.0.1:6379> set key value #设置 key-value 类型的值
OK
127.0.0.1:6379> get key # 根据 key 获得对应的 value
"value"
127.0.0.1:6379> exists key  # 判断某个 key 是否存在
(integer) 1
127.0.0.1:6379> strlen key # 返回 key 所储存的字符串值的长度。
(integer) 5
127.0.0.1:6379> del key # 删除某个 key 对应的值
(integer) 1
127.0.0.1:6379> get key
(nil)

在这里插入图片描述
使用场景:
1、string类型数据一般用来存放:不需要持久化的数据或者频繁更新的数据,比如验证码,点赞数
2、通过反序列化工具,缓存java对象。比如将某个对象序列化为json,需要用的时候再取出来,反序列化。常见的使用方式有mybatis二级缓存,接口级别缓存等等。
3、使用incr和decr来做点赞数。
4、分布式全局id。
在一个大型的系统下,如果涉及到分库分表后,mysql 的自增id满足不了需要,如果用户量不大,可以每次从redis 这里通过自增获取id,但是如果用户量大,每次都拿肯定会给redis造成压力,可以一次取1000个,放本地缓存里,等用完了再去取。

2)hash类型

是一个key-value的键值对,和java里的hashMap相似,当数据量较小是采用的是ziphash(默认),当数据量较大时采用hashtable。
常用指令

hset hash name zhencong --设置值,
hget hash name  -- 获取值
hmset hash name zhencong age 18 --批量设置
hmget hash name age --批量获取
hgetall hash 获取key的所有值
hkeys hash 获取hashmap中所有的key
hvals hash 获取hashmap中所有的value

在这里插入图片描述
使用场景:
1,可以用于存储系统中对象的数据。后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。

3)list

list即是java中的链表。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除并且且可以灵活调整链表长度,但是链表的随机访问困难。
redis的list为quickList(快速链表)即多个ziplist(压缩链表)组合起来的。但是 C 语言并没有实现链表,所以 Redis 实现了自己的链表数据结构。
常用指令:

rpush myList valu5e1 --向 list 的头部(右边)添加元素
rpush myList value2 value3 --向list的头部(最右边)添加多个元素
lpop myList # 将 list的尾部(最左边)元素取出
lpush myList2 value1 --尾插

使用场景
可以实现栈和队列,需要注意的是,push和pop的操作是原子性的,所以操作redis的时候,直接用就行了,不要把list读出来,通过java修改,再放回去,这样不能保证数据一致性。(先读先写或先读后写)

4)set(无序)

redis的set和Java中HashSet 相似,可以自动去重。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择。
set的底层结构是一个value为null的哈希表,也就意味着他的时间复杂度为O(1),也就意味着即使数据再多,查找的时间也是一样的。

使用场景
可以用来计算多个数据源的交集或并集、

常用指令

127.0.0.1:6379> sadd mySet value1 value2 # 添加元素进去
(integer) 2
127.0.0.1:6379> sadd mySet value1 # 不允许有重复元素
(integer) 0
127.0.0.1:6379> smembers mySet # 查看 set 中所有的元素
1) "value1"
2) "value2"
127.0.0.1:6379> scard mySet # 查看 set 的长度
(integer) 2
127.0.0.1:6379> sismember mySet value1 # 检查某个元素是否存在set 中,只能接收单个元素
(integer) 1
127.0.0.1:6379> sadd mySet2 value2 value3
(integer) 2
127.0.0.1:6379> sinterstore mySet3 mySet mySet2 # 获取 mySet 和 mySet2 的交集并存放在 mySet3 中
(integer) 1
127.0.0.1:6379> smembers mySet3
1) "value2"

5)SortedSet(有序)

sortedSet是一个有序不重复的列表。SortedSet里面的每个节点都关联了一个权重,用来排序。SortedSet的底层是hash和跳表(一个很典型的数据机构,牺牲空间来换取时间)。hash的作用是存储每个节点和权重,跳表的作用是用来快速获取一个区间里的节点。

使用场景
直播系统的实时排行榜
常用命令: zadd,zcard,zscore,zrange,zrevrange,zrem 等

6)布隆过滤器

布隆过滤器是一段很长的二进制向量和一系列随机映射函数,用来快速检索一个元素是否在一个集合里。但是他的准确率不是百分之百,有可能判断失误。因此他不适合零失误的场景。

优点:
1,支持海量数据场景下,判断元素是否存在。
2,存储空间占用量小,不存储数据本身,存储的是hash值
3,不存储数据本身,可以用来存储加密数据
缺点:不支持计数,同一个元素可以多次插入,而且效果是相同的。

使用场景:用来解决缓存穿透问题
可以判断用户是否阅读过某篇文章,防止重复推送,比如说抖音。

布隆过滤器原理:https://juejin.cn/post/6844903982209449991

Redis五种基本数据类型 五种基本数据类型 redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型 主要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash。 结构类型 结构存储的值 结构的读写能力 String字符串 可以是字符串、整数或浮点数 对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作; List列表 一个链表,链表上的每个节点都包含一个字符串 阅读详情

相关推荐

SDR实战(四)-AD9361使用手册(三)

本节定义了并行数据端口和串行外设接口(SPI),它们使得AD9361与基带处理器(BBP)之间能够传输数据和控制/状态信息。图63展示了这些接口,并提供了AD9361和BBP在宽带无线系统中使用方式的高级概述。数据接口以两种模式之一运行:兼容标准CMOS模式或兼容低压差分信号(LVDS)模式。每个接口都具有以下部分描述的独特特性。使用CMOS模式时:保持了单端-CMOS逻辑兼容性。可以使用一个或两个数据端口。使用两个端口可以提高数据吞吐量。

hutx0924的博客 6246

【Redis原理】Redis基本数据类型及其原理

Redis支持多种数据类型,各有特点及应用场景:String(字符串)可存储文本、数字或二进制数据,适用于缓存、计数和简易分布式锁;List(列表)按插入顺序存储元素,适合最新动态展示和简单消息队列;Hash(哈希表)存储键值对,用于对象数据存储;Set(集合)存储唯一元素,支持集合运算,适用UV统计和好友推荐;Zset(有序集合)按分值排序,适合排行榜和优先级队列;BitMap(位图)通过二进制位节省空间,适用于签到统计和用户在线状态。

gadiaola的博客 2208

别再只盯着MES了!半导体/面板厂CIM系统全家桶(EAP/YMS/SPC)保姆级入门指南

本文深入解析半导体制造中的CIM系统,涵盖EAP、YMS和SPC等关键子系统的协同工作。通过实战案例和技术细节,展示如何利用CIM系统提升生产效率、良率管理和设备维护,为半导体/面板厂提供全面的实施指南和优化策略。

weixin_33693070的博客 464

redis基本数据类型和常见命令

Redis是典型的key-value(键值型)数据库,key一般是字符串,而value包含很多不同的数据类型:Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网()可以查看到不同的命令:在redis客户端中,可以通过help @命令组名或help 命令名查看命令的用法本文首先将对redis的通用命令进行介绍,在讲解redis的5种基本数据类型(String,Hash,List,Set,SortedSet)中穿插介绍在redis中key的结构该如何设置。

c1tenj2的博客 1384

手把手教你用CubeMX给GD32F103点灯、调串口(附完整工程)

本文详细介绍了如何使用CubeMX为GD32F103开发板配置GPIO点灯和串口通信,包含完整的工程创建、代码构建和测试流程。特别强调了GD32与STM32的差异点及常见避坑技巧,帮助开发者快速上手GD32开发。

weixin_42566424的博客 313

Python+Selenium实现抖音博主批量监控:300+账号实时更新通知(附完整代码)

本文详细介绍了如何使用Python和Selenium构建一个高可用的抖音博主批量监控系统。通过架构设计、Cookie管理、高效轮询与差异检测等核心模块,实现300+账号的实时更新追踪与通知。文章提供了完整的代码实现,并重点探讨了性能优化、异常处理及服务器部署等实战经验,帮助开发者打造稳定、可控的自动化监控解决方案。

weixin_29274969的博客 196

Redis 5 种基本数据类型详解

设置一个或多个指定 key 的值MGET key1 key2 ...获取一个或多个指定 key 的值STRLEN key返回 key 所储存的字符串值的长度INCR key将 key 中储存的数字值增一DECR key将 key 中储存的数字值减一EXISTS key判断指定 key 是否存在DEL key(通用)删除指定的 keyEXPIRE key seconds(通用)给指定 key 设置过期时间。,但是 C 语言并没有实现链表,所以 Redis 实现了自己的链表数据结构。

2403_87122707的博客 1628

机器视觉中的特征提取【0】:什么是特征提取,特征提取有什么作用?

1.什么是特征提取? 特征提取的英文叫做feature extractor,它是将一些原始的输入的数据维度减少或者将原始的特征进行重新组合以便于后续的使用。简单来说有两个作用:减少数据维度,整理已有的数据特征。 这里我给一个例子来解释特征提取的第二个作用。那就是我们很熟悉的奖学金评定,我们知道学生的文化课成绩,道德分数,以及各种其他竞赛的成绩。摆在奖学金评定委员会面前的任务就是如何知道一个学生是否...

月下花弄影 5万+

【redis-01】redis基本数据类型和使用场景

redis基本数据类型和使用场景

zhenghuishengq的博客 1886

Educoder | 计算机网络实验-IP协议分析

本关任务:使用 Ping 命令发送数据报,用 Wireshark 截获数据报,分析 IP 数据报的格式,理解 IPV4 地址的编址方法,加深对 IP 协议的理解。

Mksg_28的博客 4755

mac(apple silicon)arm64安装spm12详细教程

3.下载matlab runtime R2023b for macOS (macA64),注意必须下载这个,只下载matlab是不可以的。默认安装目录是/Applications/MATLAB/MATLAB_Runtime/R2023b。注意最后的命令,路径根据自己的matlab_runtime安装位置进行调整,然后就可以安装成功了。5. 解压spm12.zip,解压后将文件夹拖到应用程序下(Applications)2.下载spm12,这个版本可兼容mac芯片!6.打开mac终端,输入。

weixin_62332001的博客 2024

Redis学习之Redis的基本数据类型

Redis基本数据类型 Redis作为内存中的数据接口存储系统,可以作为数据库、缓存、消息中间件。它的value支持多种类型的数据结构。基本数据类型包括:字符串(string)、散列(hashes)、列表(Lists)、集合(sets)、无序集合(sorted sets)五种。 字符串(strings) 类型介绍 字符串是Redis最简单的存储类型。它存储的值可以是字符串、整数或者浮点数。对整个字符串或者字符串的其中一部分执行操作;对整数或者浮点数执行自增或者自减操作; Redis的字符串是一个由字节组成的

行无所至,学无所尽。 197

鲁棒优化 (Robust Optimization) 算法详解及案例分析

鲁棒优化是一种用于处理不确定性优化问题的方法。其目标是在不确定性参数的可能取值范围内,找到一个对不确定性具有鲁棒性的解。

闲人编程的博客 4330

Redis基本命令和数据类型

一、基本命令 官网链接:官网链接 #切换到对应数据库 select index #查看数据库大小 dbsize #存储键值对 set key value #获取值 get key #清空当前数据库 flushdb #清空全部数据库 flushALL #判断指定键是否存在(0/1) exists key #删除指定库的键 move key db #设置key的过期时间 expire key seconds #查看key的剩余时间 ttl key #查看k...

Guaike0210的博客 239

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Redis 基本命令以及数据类型的使用

基本命令 # 切换数据库,index是数据库的下边,总共16个,默认为0 select index # 查看当前数据库大小 dbsize # 清空当前库 flushdb # 清空全部 flushall String类型 # 存值 set key value # 取值 get key # 键是否存在 exists key # 查看所有的key keys * # 移除键,1代表当前库 move key 1 # 设置过期时间,单位秒 expire key 10 # 查询key的过期时间,-2已过期,-1永不过期

华小灼 235

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Redis教程0x03】详解Redis的基本数据类型

字符串String是Redis中最基本也是我们最常用的数据类型,它是基于key-value结构,key是唯一标识,value是具体的值。String是一种二进制安全的数据类型,其value可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的base64编码或者解码或者url)、序列化后的对象。value最多可以容纳的数据长度是512MB。List列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向List列表添加元素(所以这是个双向链表)。

weixin_70757494的博客 1225

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis 基本数据类型解析

Redis 提供了多种高效的数据类型,每种类型都适用于不同的应用场景。通过灵活运用这些数据类型,开发者能够在处理高并发、大规模数据时,充分发挥 Redis 的性能优势。无论是简单的缓存需求,还是复杂的排行榜、地理位置服务、实时统计等功能,Redis 都能为你提供极大的支持。

00后诚续缘 1107

Redis 基本命令、键(key)命令、基本数据类型(命令行操作)

目录 Redis 基本命令 Redis 键(key) Redis 数据类型概述 Redis 基本命令 1、Redis 命令用于在 redis 服务上执行操作,要在 redis 服务上执行命令需要一个 redis 客户端。安装目录下的 redis-cli 就是自带的测试客户端。 命令行启动自带的 redis-cli 客户端连接到本地的 redis 服务:redis-cli 连接远程 ...

蚩尤后裔-汪茂雄 1万+

二、Redis基本数据类型

散列相当于Java中的HashMap,内部是无序字典。实现原理跟HashMap一致。一个哈希表有多个节点,每个节点保存一个键值对。与Java中的HashMap不同的是,rehash 的方式不一样,因为 Java 的 HashMap 在字典很大时,rehash 是个耗时的操作,需要一次性全部 rehash。Redis 为了高性能,不能堵塞服务,所以采用了渐进式 rehash 策略。

zhenlong_qu的博客 945

Redis安装、Redis基本数据类型、Jedis、Redis集群搭建

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。

2403_88996764的博客 531

Redis-基本数据类型

最近我问了很多小伙伴,他们对 Redis(远程字典服务) 大多数还是停留在String 类型上的使用【80%,还是有点可怕】 Redis 设计出了其他类型的数据类型,一定是有他的道理和使用场景的,大家还是多去了解一下其他的数据类型的使用和场景。 不要做一个简单的 API 工程师。 好了,废话少说,开始正文 目录 Redis 6中基本数据类型 是否开启缓存的因素 思考因素 字符串类型 基本命令 使用示例 运算命令 运算使用示例 批量操作命令 使用示例 使用场景 Re..

Dcpnet 747
上一篇: Hashmap
ღLiJia
博客等级 码龄6年 14粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值