【Redis】string数据类型

文章目录

  • 常用命令
    • set
      • setnx & NX
      • XX
      • setex & EX
      • psetex & PX
    • mset
    • get & mget
    • incr & decr
    • incrby & decrby
    • incrbyfloat
    • append
    • getrange
    • setrange
    • strlen
  • 内部编码

字符串类型是 Redis 最基础的数据类型。

在redis中所有的键都是 string 类型,其他的数据类型也都是在 string 的基础上构建的

string 类型可以是实际上的字符串,也可以是 JSON XML 格式的字符串

常用命令

set

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

将 string 类型的 value 设置到 key 中,时间复杂度为 O(1),设置成功返回 OK,失败返回 nil

img

可以看到 set 有很多的参数,正因为这些参数又可以分出几种不同的设置键值的命令

setnx & NX

如果在 set 命令的时候加上 NX 就代表着:只在 key 不存在时才进⾏设置,也就是说当 key 存在就不执行

想实现这个效果也可以使用 setnx 命令,这个命令就是代表着 set 加上了 NX,但是使用这个命令就不能结合 set 中的其他参数使用了。

img

XX

如果在 set 时加上 XX 就代表着:只有 key 存在的时候才能设置,将新的 Value 覆盖原先的,即 key 不存在则不执行。

这个参数并没有对应的命令

img

setex & EX

如果在 set 时加上 EX seconds 就代表着: 使用 seconds 秒设置 key 的过期时间

想实现这个效果也可以使用 setex 命令,这个命令就是代表着 set 加上了 EX。注意 setex 命令的 key 后面跟着的是 seconds 而不是 value,并且 setex 是可以覆盖已存在的 key 的值的。

SETEX key seconds value

img

psetex & PX

如果在 set 时加上 PX millseconds 就代表着: 使用 millseconds 毫秒设置 key 的过期时间

psetex 用法和 setex 一样。

img

mset

set 是单次设置一个 key,而 mset 是单次设置多个 key。

MSET key value [key value ...]

单次设置多个 key 也就意味着可以少点向 redis 发送网络请求,大大提升性能。

需要注意的是:如果单次设置太多个 key 可能会导致 redis 因为这条指令执行的时间太长而阻塞住,所以要根据实际情况衡量。

img

get & mget

get 用来获取单个 key 的 value ,需要注意如果这个 key 的 value 不是 string 类型则会报错

mget 用来⼀次性获取多个 key 的值。如果对应的 key 不存在或者对应的数据类型不是 string 返回 nil

img

incr & decr

INCR key
DECR key

incr:将 key 对应的 string 表⽰的数字加⼀。

decr:将 key 对应的 string 表⽰的数字减⼀。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrby & decrby

INCRBY key decrement
DECR key decrement

incrby:将 key 对应的 string 表⽰的数字加上 decrement 对应的值。

decrby:将 key 对应的 string 表⽰的数字减去 decrement 对应的值。

二者都是如果 key 对应的 string 表示的不是⼀个整型或者范围超过了 64 位有符号整型则报错。

img

incrbyfloat

INCRBYFLOAT key increment

incrbyfloat:将 key 对应的 string 表⽰的数字加上 increment 对应的浮点数值,increment 既可以是正数也可以是负数。

img

append

append:如果 key 已经存在并且 value 是⼀个 string,命令会将 value 追加到原有 value 的后边。如果 key 不存在则等同于 set 。

img

getrange

 GETRANGE key start end

返回 key 对应的 value 的⼦串,由 start 和 end 确定(左闭右闭)。负数表示右往左数的位置,-1表示倒数第一个,0表示正数第一个。如果超过了长度则会根据长度自动调整。

img

setrange

SETRANGE key offset value

从指定的 offset 偏移量开始覆盖字符串

img

strlen

获取 key 对应的 value 的长度,如果 value 不为 string 则报错。

内部编码

字符串类型的内部编码有 3 种:

  • 当 value 表示整型并且表示的整型不超过8个字节时,内部编码就为 int 对应 C++ 中的(long long)
  • 当 value 表示不为 int 并且字符串的长度没有超过边界值(默认值为39)个字节时,为 embstr 类型
  • 除去以上两种都为 raw

redis 会根据当前的类型和长度去决定使用哪一种内部编码实现

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习基本流程

Jupyter Notebook 代码连接: machine_learning_demo machine_learning_ensembles Step 1: Imports and Configuration import pandas as pd import numpy as np import copy import json import pickle import joblib import lightgbm as lgb import optuna impor…

【机器学习】农田智能监控系统的实践探索

机器学习赋能现代农业:农田智能监控系统的实践探索 一、机器学习在现代农业中的重要作用二、机器学习在农田智能监控系统中的应用三、农田智能监控系统的实践意义 在科技飞速发展的今天,机器学习技术正以其强大的数据处理和模式识别能力,逐步…

单点登录实现:一次登录,到处运行

单点登录:一次登录,到处运行 举个场景,假设我们的系统被切割为N个部分:商城、论坛、直播、社交…… 如果用户每访问一个模块都要登录一次,那么用户将会疯掉, 为了优化用户体验,我们急需一套机制…

【小程序】IOS wx小程序解压获取源文件

根据自己手机的系统,获取wx小程序的缓存目录 一、微信小程序文件存放路径 安卓: /data/data/com.tencent.mm/MicroMsg/{{user哈希值}}/appbrand/pkg/iOS越狱: /User/Containers/Data/Application/{{系统UUID}}/Library/WechatPrivate/{{user…

应对.halo勒索病毒:如何应对并保护你的数据安全?

导言: 在数字化时代的今天,网络空间已成为人们生活和工作中不可或缺的一部分。然而,随着网络的普及和技术的不断进步,网络安全问题也日益凸显。其中,勒索病毒作为一种极具破坏性的网络攻击手段,已经引起了…

STL-string类的使用及其模拟实现

string类的使用 string 类是 C 标准库提供的用于处理字符串的类,它相比 C 语言中的字符串处理函数更为高级、灵活和安全。 string 类提供了丰富的成员函数和操作符,用于处理字符串的拼接、查找、替换、截取、插入等操作。string 类自动处理字符串的内存分…

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G

本题为洛谷&#xff1a; 本题非常简单&#xff0c;只需从小到大排序&#xff0c;再取前两项加到sum里&#xff0c;再次排序就好了&#xff1a; #include<iostream> #include<algorithm> using namespace std; int n,a[10001],sum; int main(){cin>>n;for(in…

统计大写辅音字母

题目&#xff1a; 英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序&#xff0c;统计给定字符串中大写辅音字母的个数。 输入格式&#xff1a; 输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 输出格式&#xff1a; 输出在一行中给出字符串中大写…

restful请求风格的增删改查-----查询and添加

一、前提&#xff1a; 使用软件&#xff1a;eclipse 正确创建实体类&#xff0c;并创建set、get、tostring、有/无参构造方法 二、查询&#xff1a; 前端&#xff1a; <% page language"java" contentType"text/html;charsetUTF-8"pageEncoding&qu…

Git TortoiseGit 安装使用详细教程

前言 Git 是一个免费的开源分布式版本控制系统&#xff0c;是用来保存工程源代码历史状态的命令行工具&#xff0c;旨在处理从小型到非常大型的项目&#xff0c;速度快、效率高。《请查阅Git详细说明》。TortoiseGit 是 Git 的 Windows Shell 界面工具&#xff0c;基于 Tortoi…

Vue.js前端开发零基础教学(六)

学习目标 了解什么是路由&#xff0c;能够说出前端后端路由的原理 掌握多种路由的使用方法&#xff0c;能够实现路由的不同功能 掌握Vue Router的安装及基本使用方法 5.1 初始路由 提到路由&#xff08;Route),一般我们会联想到网络中常见的路由器&#xff08;Router),…

PSA Group EDI 需求分析

PSA集团&#xff08;以下简称PSA&#xff09;中文名为标致雪铁龙集团&#xff0c;是一家法国私营汽车制造公司&#xff0c;致力于为全球消费者提供独具特色的汽车体验和自由愉悦的出行方案&#xff0c;旗下拥有标致、雪铁龙、DS、欧宝、沃克斯豪尔五大汽车品牌。 汽车制造企业对…