redis的筑基之路(二)

Spring Boot:筑基 Spring Boot筑基 阅读详情

先写第二篇,是为了留一个篇章写如何安装redis。本篇主要介绍redis的字符串类型的指令,就不再赘述redis背景等理论知识。
字符串类型
字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。


APPEND key value O(1)
如果该Key已经存在,APPEND命令将参数Value的数据追加到已存在Value的末尾。如果该Key不存在,APPEND命令将会创建一个新的Key/Value。 追加后Value的长度。
DECR key O(1)
将指定Key的Value原子性的递减1。如果该Key不存在,其初始值为0,在decr之后其值为-1。如果Value的值不能转换为整型值,如Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型递减后的Value值。
INCR key O(1)
将指定Key的Value原子性的递增1。如果该Key不存在,其初始值为0,在incr之后其值为1。如果Value的值不能转换为整型值,如Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型递增后的Value值。
DECRBY key decrement O(1)
将指定Key的Value原子性的减少decrement。如果该Key不存在,其初始值为0,在decrby之后其值为-decrement。如果Value的值不能转换为整型值,如Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型减少后的Value值。
INCRBY key increment O(1)
将指定Key的Value原子性的增加increment。如果该Key不存在,其初始值为0,在incrby之后其值为increment。如果Value的值不能转换为整型值,如Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型增加后的Value值。
GET key O(1)
获取指定Key的Value。如果与该Key关联的Value不是string类型,Redis将返回错误信息,因为GET命令只能用于获取string类型并且是与该Key相关的Value,如果该Key不存在,返回nil。
SET key value O(1)
设定该Key持有指定的字符串Value,如果该Key已经存在,则覆盖其原有值。 永远返回”OK”。
GETSET key value O(1)
原子性的设置该Key为指定的Value,同时返回该Key的原有值。和GET命令一样,该命令也只能处理string Value,否则Redis将给出相关的错误信息。 返回该Key的原有值,如果该Key之前并不存在,则返回nil。
STRLEN key O(1)
返回指定Key的字符值长度,如果Value不是string类型,Redis将执行失败并给出相关的错误信息。 返回指定Key的Value字符长度,如果该Key不存在,返回0。
SETEX key seconds value O(1)
原子性完成两个操作,一是设置该Key的值为指定字符串,同时设置该Key在Redis服务器中的存活时间(秒数)。该命令主要应用于Redis被当做Cache服务器使用。EX表示存在。
SETNX key value O(1)
如果指定的Key不存在,则设定该Key持有指定字符串Value,此时其效果等价于SET命令。相反,如果该Key已经存在,该命令将不做任何操作并返回。1表示设置成功,否则0。NX表示不存在。
SETRANGE key offset value O(1)
替换指定Key的部分字符串值。从offset开始,替换的长度为该命令第三个参数value的字符串长度,其中如果offset的值大于该Key的原有值Value的字符串长度,Redis将会在Value的后面补齐(offset - strlen(value))数量的0x00,之后再追加新值。如果该键不存在,该命令会将其原值的长度假设为0,并在其后添补offset个0x00后再追加新值。鉴于字符串Value的最大长度为512M,因此offset的最大值为536870911。最后需要注意的是,如果该命令在执行时致使指定Key的原有值长度增加,这将会导致Redis重新分配足够的内存以容纳替换后的全部字符串,因此就会带来一定的性能折损。
GETRANGE key start end O(1)
如果截取的字符串长度很短,我们可以该命令的时间复杂度视为O(1),否则就是O(N),这里N表示截取的子字符串长度。该命令在截取子字符串时,将以闭区间的方式同时包含start(0表示第一个字符)和end所在的字符,如果end值超过Value的字符长度,该命令将只是截取从start开始之后所有的字符数据。
SETBIT key offset value O(1)
设置在指定Offset上BIT的值,该值只能为1或0,在设定后该命令返回该Offset上原有的BIT值。如果指定Key不存在,该命令将创建一个新值,并在指定的Offset上设定参数中的BIT值。如果Offset大于Value的字符长度,Redis将拉长Value值并在指定Offset上设置参数中的BIT值,中间添加的BIT值为0。最后需要说明的是Offset值必须大于0。
GETBIT key offset O(1)
返回在指定Offset上BIT的值,0或1。如果Offset超过string value的长度,该命令将返回0,所以对于空字符串始终返回0。 在指定Offset上的BIT值。
MGET key [key …] O(N)
N表示获取Key的数量。返回所有指定Keys的Values,如果其中某个Key不存在,或者其值不为string类型,该Key的Value将返回nil。 返回一组指定Keys的Values的列表。
MSET key value [key value …] O(N)
N表示指定Key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行SET命令。该命令不会失败,始终返回OK。
MSETNX key value [key value …] O(N)
N表示指定Key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行SETNX命令。然而这里需要明确说明的是,如果在这一批Keys中有任意一个Key已经存在了,那么该操作将全部回滚,即所有的修改都不会生效。 1表示所有Keys都设置成功,0则表示没有任何Key被修改。


总结:redis的字符串类型的指令虽然简单,但字符串类型是学redis重中之重的内容,后面提到的类型(集合、有序集合、哈希、列表)多多少少和字符串类型相关,所以本篇虽然枯燥,却是redis的筑基良篇。

原创文章,转载需注明出处。

ai数字人系统部署 这段代码实现了基本的语音交互闭环,用户通过语音输入问题,数字人识别语音后进行自然语言理解并生成回复,再将回复转换为语音输出。但实际应用中的 AI 数字人系统更为复杂,如形象渲染需专业图形引擎(如 Unity、Unreal Engine),自然语言处理也会涉及更复杂的模型微调及多轮对话管理等。一个完整的 AI 数字人系统涵盖形象生成、自然语言处理、动作控制等多个复杂功能,下面为你提供一个 Python 示例,整合多个库来实现数字人基础功能,包括语音交互、简单的自然语言理解以及通过虚拟形象展示对话。 阅读详情

相关推荐

深入解析STM32官方库:.c/.h文件功能与应用场景

本文深入解析了STM32官方库中.c和.h文件的核心功能与应用场景。详细剖析了stm32f10x.h、启动文件、外设驱动文件等关键组件的作用,并通过LED闪烁实战演示了如何构建工程、配置文件和调用库函数。文章旨在帮助开发者理解官方库的架构,掌握高效使用技巧,从而降低STM32开发门槛,提升开发效率与代码质量。

weixin_29189377的博客 351

大数据之Redis——redis基础操作

redis基础入门

myself_ning的博客 1050

Computers & Security 投稿实战:从零到一详解避坑指南

本文详细解析了向《Computers & Security》投稿的全流程避坑指南,包括ORCID账号注册、文件格式统一、Editorial Manager®系统操作技巧等关键步骤。特别强调了cover letter撰写、Declaration of Interest Statement准备以及PDF生成后的检查要点,帮助研究者高效完成投稿流程。

weixin_29228203的博客 675

redis详解之常用操作命令

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系型数据库)。

原名:@程序员大禹 456

Excel VBA--按某一列拆分数据到多个文件

首先,将需要拆分的sheet命名为“明细”,接下来运行此代码,按提示操作即可。 在这里插入代码片 Sub chaifen() '定义变量类型 Dim sht, sh1, sh2 As Worksheet Dim k, i, j As Integer Dim irow As Integer Dim col As Integer Dim str As String '程序开始是要求输入按哪一列拆分数...

weixin_43650026的博客 5873

Oracle19c SYSAUX表空间爆满?手把手教你清理SM/ADVISOR和AUDSYS占用(附完整SQL)

本文详细解析了Oracle19c中SYSAUX表空间爆满的常见原因及解决方案,重点针对SM/ADVISOR和AUDSYS组件的空间占用问题提供了完整的SQL清理脚本。通过诊断查询、空间清理和预防性维护策略,帮助DBA有效管理SYSAUX表空间,确保数据库稳定运行。

weixin_28338005的博客 236

Redis如何实现原子性自增自减

Redis如何进行原子性自增自减

赢啦啦的博客 5771

基于PSO-BP神经网络的风电功率预测研究论文复现

风电功率预测。基于PSO-BP神经网络的风电功率预测论文复现。matlab程序,注释清晰。

weixin_825487230的博客 2295

Redis数据类型

Redis数据类型1. Redis的五大数据类型2. Redis常用操作命令2.1 key相关命令2.2 string常用命令2.3 List常用命令2.4 Hash2.5 Set集合常用命令2.6 zset有序集合常用命令(sorted set)3. Redis中的其他数据结构3.1 Redis HyperLogLog3.2 BitMaps3.3 geospatial 1. Redis的五大数据...

Leonardy的博客 587

手把手教你学Simulink实例:基于Simulink的超级电容器充放电仿真

超级电容器(Supercapacitor)是一种高容量电容器,具有快速充放电能力、长寿命和高功率密度等优点。它在能量存储系统、电动汽车、不间断电源(UPS)等领域有广泛应用。为了更好地理解和设计超级电容器的应用系统,通常需要进行详细的仿真分析。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证超级电容器充放电系统的控制策略。本教程将详细介绍如何使用 Simulink 进行超级电容器充放电的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行超级电容器充放电的仿真实例。

MHD0815的博客 581

【ROS2】机械臂MoveIt2

navigation2 专注于移动机器人的导航与定位,处理大范围空间的底盘运动;MoveIt2 专注于机械臂的操作规划,处理多关节协同的末端执行器运动。在复合机器人(如,移动机械臂)navigation2 负责移动到目标区域,MoveIt2 负责机械臂抓取。官网:https://moveit.picknik.ai/main/index.html。

郭老二 595

redis扣减库存示例代码 java

使用redis扣减库存,保证库存不超发或少发的核心是保证redis读取库存和扣减库存的原子性。不能多个线程读取同一时刻的库存再去做扣减,也不能多个线程先扣减库存再去读库存。 下面先介绍正确实例 1.使用lua脚本 SpringDataRedis版本 代码如下 package com.wl.redis.jedis; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.springframework.bea

wl的博客 1827

10步掌握!跨国企业在MySQL中实现数据主权的秘诀 vs. 传统方法,你选对了吗?

首先,我们要明确“数据主权”这一概念。简单来说,它指的是国家对其境内产生的所有类型的数据拥有绝对控制权。这意味着即使数据被存储在国外服务器上,只要该数据来源于某国,那么该国政府就有权对其进行监管。对于跨国公司来说,这就要求它们必须严格遵循不同国家关于数据保护的规定,如欧盟的GDPR、美国的《云法案》以及中国的《网络安全法》等。

java专栏 714

Redis修炼秘籍筑基篇 — 3分钟教你安装连接测试Redis

全网最详细Redis安装教程,3分钟手把手教你安装连接测试Redis

sao_jie的博客 3604

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

第一重·筑基篇:SpringBoot丹田气海贯通要诀

步骤一:铸造经脉核心(自动配置类)@九阳真经·奇经八脉拓展诀@Autowired@Bean步骤二:凝练真气要诀(配置属性)@九阳真经·真气凝聚篇// 初始内力值// 已通经脉数// 省略getter/setter步骤三:书写乾坤挪移符(spring.factories)# 九阳真经·移穴换位秘术。

ELIHU_han的博客 1419

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

redis的筑基之路(一)

近期正好在学Linux,学到redis突发奇想想用博客记录下学习的过程,那么redis的筑基之路就此开始了。本文将介绍如何安装redis。redis的特点1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 3.Redis支

sql4653的博客 437

FastAPI筑基_Day18_给接口加上Redis缓存,高并发再也不怕打垮MySQL

在我们之前完成的 FastAPI 项目中,所有查询请求都直接查 MySQL 数据库。高频重复查询每次都走数据库磁盘 IO,压力极大数据库查询速度远低于内存读取,接口响应慢高并发场景下接口响应卡顿、甚至超时引入 Redis 内存缓存。这篇文章从零完成 FastAPI + Redis 的全套缓存方案,最终产出一套可直接进生产的缓存代码:Redis 连接全局封装与依赖注入、单条数据接口缓存、列表热点数据缓存、自定义过期时间、数据更新后缓存清理,并讲清缓存穿透、缓存不一致等工程问题的处理思路。

qq_39293057的博客 874

Oracle筑基篇-通过一个事务流程筑基Oracle

Oracle筑基篇-通过一个事务流程筑基Oracle

weixin_60783132的博客 735

【筑基期】深入redis缓存三兄弟问题

大家好呀,我是jstart千语。在大多数的业务中,或多或少都会有高并发的场景,典型的就有电商、社交、游戏等。而且相信大家都知道要用缓存来解决数据库压力的问题,也知道缓存会失效或者出现极端流量的时候,数据库可能被瞬间击穿,导致服务崩溃。redis出现问题导致的结果,无非就是让数据库受到了非常大的压力,所以解决的思路就是这么维护好redis。紧接上回,这里再详细介绍一下redis缓存在使用时出现的问题及其解决思路。

m0_74289770的博客 916

lua脚本在redis的实战案例

Lua脚本在Redis中提供了强大的功能,它允许你执行原子性的复杂操作,从而提高Redis的性能和安全性。以下是一些关于如何在Redis中使用Lua脚本的基本知识

码到三十五 1万+

我,Redis真君,掌管万界缓存

陆川穿成修仙界废柴,却觉醒Redis灵根。 师尊骂他:“连筑基都缓存的废物!” 直到魔道举宗来袭,护山大阵崩碎在即。 陆川抬手祭出AOF持久化日志: “你们的攻击,连我的RDB快照都覆盖不了。” 当上古血祭大阵吞没三千里山河, 他反手展开Cluster分片集群: “要我崩?先问过16384个哈希槽同意吗?” 九天仙帝降下焚世雷劫时, 陆川笑着点开内存碎片整理: “陛下,您的雷海……我收进缓存了

qq_58967403的博客 874

最全Java筑基之——泛型,Mysql和Redis数据同步该怎么做

这样,等真的沉下心来学习,不至于被找资料分散了心神。另外,给大家安排了一波学习面试资料:以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取反编译后的:金三银四到了,送上一个小福利!本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

2401_84006757的博客 894

备战2021年金三银四:架构筑基篇+设计思想解读开源框架篇+分布式架构篇+微服务架构篇+性能调优篇,Java核心手册分享,牛批了!

如此火热的秋招,想必现在聊天都得三句不离:跳槽?涨薪?大厂?面试?可秋招季,毕业季,有人欢喜有人愁,随着一批又一批的程序员新星涌入,所谓长江后浪拍前浪...但前浪可别被拍死在沙滩上呀!除了不断的学习,提升自己的技术,作为程序员的你我想应该都别无选择吧,除非想在沙滩上凉凉... 前些日子,在某大厂的朋友偷偷给了我本内部学习资料——[JAVA核心手册],仔细翻阅一番才知道里面收纳整理的知识可真是齐全,不得不来感叹一番... 今天会来介绍一番这本某厂内部[JAVA核心手册]全部内容,但是因为要控制文章篇

+W❤:bjmsb2019 353

架构师筑基必备技能(学习路线)

一、架构师筑基必备技能 1.1 并发编程进阶 线程共享和协作 并发工具类实战 站在巨人肩上操作CAS 阿里面试常问的显示锁和AQS 并发容器源码解析及应用实战 仅会用线程池是不够的 架构师应该知道的并发安全解决方案 性能优化实战 并发编程面试题目汇集 1.2 JVM性能深度调优 15种方式编写高效优雅Java程序实战 Java内村区域深入解析 垃圾回收器和内存分配策略 ...

显波的博客 1254

架构师筑基必备技能

1.1 并发编程进阶 线程共享和协作 并发工具类实战 站在巨人肩上操作CAS 阿里面试常问的显示锁和AQS 并发容器源码解析及应用实战 仅会用线程池是不够的 架构师应该知道的并发安全解决方案 性能优化实战 并发编程面试题目汇集 1.2 JVM性能深度调优 15种方式编写高效优雅Java程序实战 Java内村区域深入解析 垃圾回收器和内存分配策略 你必须知道的JVM执行子系统 JVM类加载机制及执行引擎原理 JVM性能优化实战 JVM面试锦囊妙计 1.3 网络编程与...

Firstlucky77的博客 427

java redis缓存持久化_Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用...

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。...

weixin_35915120的博客 417

程序员成长指南:从技术筑基到职业发展的全路径

程序员成长不仅需要扎实的技术基础,如编程语言、算法与数据结构、设计模式等核心概念,还需要掌握工程实践中的高效调试、性能优化和安全防御等硬技能。技术能力的提升是基础,但真正的突破往往来自于软技能的培养,如技术影响力建设、高效沟通和职业规划策略。通过第一性原理思考和杠杆效应应用,程序员可以更高效地解决复杂问题并提升个人价值。本文结合Redis源码精读、动态规划实战、微服务架构演进等热词,为程序员提供从菜鸟到大牛的完整成长路线图。

weixin_33843409的博客 427
上一篇: 同步代码块synchronize在Java中的应用
下一篇: redis的筑基之路(一)
苏奇伦
博客等级 码龄11年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值