redis-学习笔记(string)

redis 中的字符串, 是按照二进制的方式存储和读取的, 即存啥取啥, 所以一般不会出现乱码问题
(乱码问题是因为存储和读取时使用的编码方式不一样, 但是 redis 没有编码转换)
redis 限制了 string 的大小 : 512M, 因为 单线程模型 希望进行的操作能够比较快速, 越大越慢

在这里插入图片描述

set key value [expiration EX seconds | PX milliseconds ] [NX | XX]

eg : set key value ex 10
expiration 超时时间
EX 以秒为单位
PX 以毫秒为单位
NX 如果 key 不存在, 才设置, 存在则不设置, 返回 nil
XX 如果 key 存在, 才设置(相当于更新 key 的 value), 不存在则不设置, 返回 nil

setnx key <==> set key NX

不存在才能设置, 存在则设置失效

setex key seconds

设置过期时间 秒

setpx key milliseconds

设置过期时间 毫秒

如果 key 不存在, 就创建新的键值对.
如果 key 存在, 则是让新的 value 覆盖旧的 value, 可能会改变原来的数据类型, 原来的 key 的 ttl (生存时间) 也会失效

mset key value [key value …] – O(k)

一次添加多个键值对

mget key [key …] – O(k)

一次获取多个键的值

下面几个操作要求 key 的 value 必须是整数

redis 中整数代表的范围: 64位 / 8位表示的整数, 相当于 C++ 中的 long long 或 Java 中的 long

incr key – O(1)

针对 key 的值 +1, 返回的是 +1 之后的值, 相当于 (++key)

incrby key n – O(1)

针对 key 的值 +n

decr key – O(1)

针对 key 的值 -1

decrby key n – O(1)

针对 key 的值 -n

incrbyfloat key value – O(1)

把 key 对应的 value 进行 + / - 操作, 运算的操作可以是 浮点数
" - " 操作通过负数来实现

append key value

返回值是增添字符的长度

strlen key

获取到字符串的长度

setrange key offset value

从下表从 offset 开始, 往 key 对应的值中插入value,并顶替掉原来该位置上的字符

getrange key start end

获取 key 对应的 value 的 [start, end] 位之上的字符
-1 代表倒数第一个字符
即 “getrange key 0 -1” ----- 代表获取该 key 对应的值

object encoding key

查看 key 值得编码类型
string 内部有三种编码方式

  1. int 64位 / 8字节 的整数
  2. embstr 压缩字符串, 适用于表示比较短的字符串
  3. raw 普通字符串, 适用于表示比较长的字符串(长度可改写, 所以不建议硬记 ---- 39字节)

string 应用场景

在这里插入图片描述

数据查询的整体思路:
应用服务器先查 redis , 查到了就返回数据, 查不到再查 MySQL, 将数据返回服务器的同时, 把数据写入到 redis 中.

上述行为, 经常用来被存储 “热点” 数据 (高频被使用的数据)
但是随着时间推移, redis 上的数据会越来越多, 因此解决方案如下:

  1. 给存储的数据设置一个过期时间
  2. redis 在内存不足的时候, 提供了淘汰策略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/233761.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂MySQL基础知识文集(8)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

python3安装lifelines

目录 一、环境 二、安装lifelines 出现问题 三、测试导入 一、环境&#xff1a; jupyter notebook中新建ipynb文件 二、安装lifelines pip install --upgrade --no-deps githttps://github.com/CamDavidsonPilon/lifelines.git出现问题&#xff1a; 缺少模块autograd、f…

1834_emacs_ivy以及counsel的常用功能

Grey 全部学习汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. emacs ivy以及counsel的常用功能 主要功能 ivy主要是实现一些emacs的minibuffer的操作增强功能的。如果不进行类似的增强扩展&#xff0c;在进行这方面相…

[文档级关系抽取|ACL论文]文档级关系抽取中语言理解的基础模型

Did the Models Understand Documents? Benchmarking Models for Language Understanding in Document-Level Relation Extraction School of Computer Science, Fudan University | ACL 2023.06 | 原文链接 Background 过去的工作大多数都是从单个句子中收获更多的关系&am…

1-2、Java环境搭建

语雀原文链接 文章目录 1、JDK安装2、Hello World2-1、Hello World示例2-2、类名和文件名2-3、注释2-4、javadoc 3、环境变量3-1、Path作用3-2、classpath3-3、JAVA_HOME 4、Java组成5、跨平台原理5-1、Java跨平台原理5-2、C语言的跨平台原理 1、JDK安装 下载地址&#xff1a…

(JAVA)-IDEA导第三方包

1.下载好第三方的包 2.将jar包复制&#xff0c;上图中的第一个数字jar包是我们要选择的 3.模块下新建外包文件 4.将复制的jar文件粘贴进去 . 5.右键jar包将文件与jar包关联 注意&#xff1a;第三方库中有些名字跟java包中重名&#xff0c;导包时候注意不要导错了。

数据结构算法-归并排序

引言 小明和小森是超市的货架管理人员&#xff0c;他们每天都要确保货架上的商品摆放整齐、有序。一天&#xff0c;他们发现一个货架上的商品有些混乱&#xff0c;需要尽快进行补货。由于该货架上的商品种类繁多&#xff0c;不同种类的商品之间还要考虑价格、销量等因素&#…

data_loader返回的每个batch的数据大小是怎么计算得到的?

data_loader是一个通用的术语&#xff0c;用于表示数据加载器或数据批次生成器。它是在机器学习和深度学习中常用的一个概念。 一、data loader 数据加载器&#xff08;data loader&#xff09;是一个用于加载和处理数据集的工具&#xff0c;它可以将数据集划分为小批次&#…

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 52页论文及代码

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 52页论文及代码 1 题目 C题蔬菜类商品的自动定价与补货决策 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就…

2023.12.10 homework

五年级一元一次方程

Autosar通信入门系列07-CanNM状态机切换详解

本文框架 1. 概述2. NM状态机时间参数及常用接口介绍2.1 涉及时间参数说明2.2 状态机切换涉及接口介绍 3 NM状态机及其切换介绍3.1 NM状态机概览3.2 NM状态机切换过程详解 1. 概述 本文为Autosar通信入门系列介绍&#xff0c;如您对AutosarMCAL配置&#xff0c;通信&#xff0…

P13 Linux进程间通信——管道

前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《Linux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f6f8;推荐专栏3: ​​​​​​《链表_C…

什么是双亲委派模型

一、定义 双亲委派模型是 Java 类加载器的一种工作模式&#xff0c;通过这种工作模式&#xff0c;Java 虚拟机将类文件加载到内存中&#xff0c;这样就保证了 Java 程序能够正常的运行起来。 二、类加载器 双亲委派模型针对的是 Java 虚拟机中三个类加载器的&#xff0c;这三…

NSSCTF-Crypto靶场练习--第11-20题wp

文章目录 [SWPUCTF 2021 新生赛]traditional[LitCTF 2023]梦想是红色的 (初级)[SWPUCTF 2021 新生赛]crypto2[羊城杯 2021]Bigrsa[LitCTF 2023]Hex&#xff1f;Hex&#xff01;(初级)[SWPU 2020]happy[AFCTF 2018]BASE[安洵杯 2019]JustBase[鹤城杯 2021]Crazy_Rsa_Tech[SWPUCT…

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时&#xff0c;不能用本地 Node.js 打开 答&#xff1a;因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法&#xff1a; 1.修改文件夹名称 2.重新下载 注意&#xff1a;找一…

如何使用 Explain 分析 SQL 语句?

如何使用 Explain 分析 SQL 语句&#xff1f; MySQL中EXPLAIN命令是我们分析和优化SQL语句的利器。 如何使用EXPLAIN来分析SQL语句&#xff0c;接下来有15个例子&#xff0c;一起学习呗 1. EXPLAIN的基本使用 EXPLAIN可以用于分析MySQL如何执行一个SQL查询&#xff0c;包括如…

m6A RNA甲基化MeRIP-seq测序分析实验全流程解析

甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)实验怎么做&#xff0c;从技术原理、建库测序流程、信息分析流程和研究套路等四方面详细介绍。 一、甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)测序技术原理 表观转录组指RNA序列不发生改变的情况下&#xff0c;由RNA上的化学修饰调节基因…

股票放量成交后,大涨的概率有多少?

很多时候&#xff0c;经常有人会感觉&#xff0c;成交量突然放大5倍以上&#xff0c;后面的股价大概率会上涨&#xff0c;很多投顾班的老师也是给大家展示这样的感觉&#xff0c;那究竟有多大比例的上涨呢&#xff1f; 【文章仅是数据分析&#xff0c;不构成任何投资建议】 一…

如何主持一场知识竞赛抢答赛

知识竞赛主持说难不难&#xff0c;说简单也不简单&#xff0c;我就从易到难介绍一下。 入门级&#xff0c;题主不用练习太多其他花哨的技巧&#xff0c;只要注意一点&#xff0c;熟悉比赛流程。知识竞赛需要给所有选手一个公平流畅的答题环境&#xff0c;所以题主自身必须非常…

FreeRTOS的任务优先级、Tick以及状态讲解(尊敬的嵌入式工程师,不妨进来喝杯茶)

任务优先级和Tick 在FreeRTOS中&#xff0c;任务的优先级和Tick是两个关键的概念&#xff0c;它们直接影响任务的调度和执行。 任务优先级 每个任务都被分配一个优先级&#xff0c;用于决定任务在系统中的调度顺序。 优先级是一个无符号整数&#xff0c;通常从0开始&#xff0…
最新文章