Redis系列(二)、数据类型之字符串String

Redis-五大数据类型-String(字符串) - String是Redis最基本的类型,一个key对应一个value。 - String是二进制安全的,意味着String可以包含任何数据,比如序列化对象或者一张图片。 - String最多可以放512M的数据。 阅读详情

目录

介绍

命令行模式

増

删

改

查

计数

追加

长度

Python客户端

环境

创建连接

増

删

查

计数

追加

长度


Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

------------------------Redis字符串类型----------------------

介绍

Redis的String类型可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB;

 

命令行模式

进入命令行模式:

redis-cli -a password_value

redis-cli -a password_value --raw
--raw 避免中文显示乱码

 

help

使用下面的命令查看手册:

help @string

 

exists 

查看key是否存在,返回true / false, 1/0

exists key

 

増

set

set,setex,psetex,setnx

#ex为多少秒过期 px为多少毫秒过期,nx为若不存在才创建,xx为若存在才覆盖创建
set key value [ex seconds] [px milliseconds] [nx|xx]

使用set命令新增一个键值对,EX,PX用法:

127.0.0.1:6379> set name 王义凯
OK
127.0.0.1:6379> get name
"\xe7\x8e\x8b\xe4\xb9\x89\xe5\x87\xaf"   
127.0.0.1:6379> set name wang,yikai
OK
127.0.0.1:6379> get name
"wang,yikai"
127.0.0.1:6379> set name_ex wyk ex 10
OK
127.0.0.1:6379> ttl name_ex
(integer) 2
127.0.0.1:6379> ttl name_ex
(integer) -2
127.0.0.1:6379> get name_ex
(nil)
127.0.0.1:6379> set name_px wyk px 10000
OK
127.0.0.1:6379> ttl name_px
(integer) 4
127.0.0.1:6379> ttl name_px
(integer) 0
127.0.0.1:6379> get name_px
(nil)
127.0.0.1:6379> setex name_ex 10 wyk
OK
127.0.0.1:6379> ttl name_ex
(integer) 3
127.0.0.1:6379> ttl name_ex
(integer) 0
127.0.0.1:6379> get name_ex
(nil)
127.0.0.1:6379> psetex name_px 10000 wyk
OK
127.0.0.1:6379> ttl name_px
(integer) 3
127.0.0.1:6379> ttl name_px
(integer) -2
127.0.0.1:6379> get name_px
(nil)

 SET中 NX,XX用法:

127.0.0.1:6379> set name_csdn wyk
OK
127.0.0.1:6379> get name_csdn
"wyk"
127.0.0.1:6379> set name_csdn wyk2
OK
127.0.0.1:6379> get name_csdn
"wyk2"
127.0.0.1:6379> set name_nx wyk nx
OK
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> set name_nx wyk2 nx
(nil)
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> setnx name_nx wyk2
(integer) 0
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> set name_xx wyk xx
(nil)
127.0.0.1:6379> get name_xx
(nil)
127.0.0.1:6379> set name_xx wyk
OK
127.0.0.1:6379> get name_xx
"wyk"
127.0.0.1:6379> set name_xx wyk2 xx
OK
127.0.0.1:6379> get name_xx
"wyk2"

 

mset

mset,msetnx

同时定义多个键值对,mset也可以和nx一起用:

mset key1 value1 [key2 value2...] #批量创建kv,已存在的会被更新
msetnx key1 value1 [key2 value2...] #批量创建kv,所有key不存在才会创建
127.0.0.1:6379> mset k1 a k2 b k3 c
OK
127.0.0.1:6379> mget k1 k2 k3
1) "a"
2) "b"
3) "c"

 

删

del

使用del命令删除数据,可批量可单个删除:

 del key1 [key2 key3...]
127.0.0.1:6379> del k1 k2 k3
(integer) 3
127.0.0.1:6379> del name_xx
(integer) 1
127.0.0.1:6379> mget k1 k2 k3 name_xx name_nx
1) (nil)
2) (nil)
3) (nil)
4) (nil)
5) "wyk"

改

set

上面set中介绍了,如果对同一个key进行set即可更新该数据:

127.0.0.1:6379> set email wyk@csdn.com
OK
127.0.0.1:6379> get email
"wyk@csdn.com"
127.0.0.1:6379> set email rick@csdn.com
OK
127.0.0.1:6379> get email
"rick@csdn.com"

getset

等同于get+set,执行此命令返回get的结果,然后将该key更新为新的value,下次再get的时候查到的就是新的value:

getset key new_value
>>old_value
get key
>>new_value

setrange

对指定下标的字符串进行更新,下标从0开始算起:

setrange key offeset value

查

keys

查看所有的key

keys *

 

get

使用get获得指定key的value

get key

mget

使用mget批量获得指定keys的values

mget key1 [key2 key3...]

getrange

 从字符串的指定开始结束下标截取字符串返回,下标从0开始算起:

getrange key start end

计数

incr

对指定的key的value加1,递增步长默认1,如果key不存在,其初始值为0,在incr之后其值为1,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

incr key

 

decr

对指定的key的value减1,递减步长默认1,如果key不存在,其初始值为0,在decr之后其值为-1,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

decr key

 

incrby

对指定的key的value加指定的步长,递增步长可指定,如果key不存在,其初始值为0,在incrby之后其值为步长,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

#步长increment为整数,当为负数时效果等于递减
incrby key increment

 

decrby

对指定的key的value减指定的步长,递减步长可指定,如果key不存在,其初始值为0,在decrby之后其值为步长的负数,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

#步长increment为整数,当为负数时效果等于递増
decrby key increment

incrbyfloat

效果与incrby类似,此方法支持传浮点型的值,正数为增,负数为减
 

追加

append

在字符串最后面追加子串:

append key value

 

长度

strlen

返回字符串的长度:

strlen key

 

Python客户端

下面介绍如何在python客户端实现和上面一样的操作,每个函数的含义不多赘述,在上面都有很详细的介绍了。

环境

#Redis6.0.3
pip install redis==3.4.1

创建连接

import redis

#redis返回的结果默认是字节类型,设置decode_responses=True改成字符串
#直接获得连接
r = redis.StrictRedis(host='wykd', port=6379, db=0,password='123456', decode_responses=True)

#使用连接池创建连接
pool = redis.ConnectionPool(host='wykd', port=6379, password='123456', decode_responses=True)
r1 = redis.Redis(connection_pool=pool)
r2 = redis.Redis(connection_pool=pool)

増

set

通过这些函数可以看到,函数名和上面的redis命令行模式里一样,甚至参数也是一样的使用方式:

r.set('python_key1','python_value1')
r.get('python_key1')
r.set('py_ex','ppp',ex=10)     #创建10秒过期的kv,单位秒
r.ttl('py_ex')                 #查看剩余过期时间,单位为秒
r.set('py_ex','ppp',px=10000)  #创建10000毫秒过期的kv,单位毫秒
r.set('py','3.7',nx=True)      #当不存在key时才会创建
r.set('py','3.7.1',xx=True)    #当key存在时才会更新

mset

r.mset({'k1':'v1','k2':'v2','k3':'v3'}) #批量创建更新key
r.msetnx({'k1':'v1','k5':'v5'}) #所有key都不存在的时候才会批量创建
r.msetnx({'k4':'v4','k5':'v5'})

删

del

r.delete('k5') #批量或逐个删指定的key

改

set

r.set('A','aaa')
r.set('A','bbb') #key相同会被更新
r.get('A')

getset

r.get('A') #old value
r.getset('A','ccc') #先返回old value 再修改为new value
r.get('A') #new value

setrange

r.setrange('A',0,'AA') #从指定下标开始修改字符串

查

keys

#参数为pattern,返回所有的key的列表
r.keys('*')

get

r.get('A')

 

mget

r.mget(['k1','k2','k3','k5']) #传参为列表

 

getrange

r.getrange('A',0,2) #根据start和end下标截取字符串返回

计数

incr

python客户端中incr和incrby的函数一样:

源码:

因此我们可以使用amount参数来选择步长:

#步长可以为负数,但必须是整数
r.set('int1','1')
r.incr('int1') #默认步长为1
r.incrby('int1') #默认步长为1
r.incr('int1',amount=2) #设置步长为2
r.incrby('int1',amount=2) #设置步长为2

decr

python客户端中decr和decrby的函数一样:

源码:

因此我们可以使用amount参数来选择步长:

#步长可以为负数,但必须是整数
r.decrby('int1',amount=2) #设置步长为2
r.decrby('int1',amount=-2) #设置步长为-2
r.decr('int1',amount=-2) #设置步长为-2
r.decr('int1',amount=2) #设置步长为2

 

incrby

同incr

decrby

同decr

 

追加

append

r.append('A','bcd') #从value字符串后面追加子串,返回追加后的字符串长度
r.append('A','efg')

长度

strlen

r.strlen('A') #返回value字符串的长度

 

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

Redis系列之String 前言 上节我们介绍了Redis的key相关操作,前面也谈到Redis中有5大数据类型,今天我们就来谈谈5大数据类型之一:String类型,我们主要介绍Redis中String的用法。 基本语法 String的基本语法:command keyname 常见命令 设置指定 key 的值:set keyname value 获取指定key的值:get keyname 按范围返回字符串中值:getrange keyname startindex endindex ... 阅读详情

相关推荐

Redis系列之数据类型

Redis支持数据类型有以下5种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),下面我们将一一介绍。 String(字符串) string是redis最基本的类型:一个key对应一个value,一个key最大能存储512MB; string类型是二进制安全的:意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 ,为什么说S听类型是二进制安全的呢?这是由于Redis内部对String的定义是一.

吭哧吭哧快乐的小牛码 2万+

Redis的五种常用数据类型

设置了一个键count,初始值为10。然后使用DECRBY命令递减键的值5,返回递减后的值5。 首先设置了一个键mykey,值为"hello"。然后使用APPEND命令将"value"追加到mykey的末尾,返回追加后字符串的总长度5。最后使用GET命令获取mykey的值,得到"hello world"。 在这个例子中,设置了一个键mykey,值为"hello"。然后使用STRLEN命令获取mykey的值的长度,返回值为5。 设置了一个键mykey,值为"This is a string"。然后使用GETR

weixin_66083745的博客 157

SAP 小结

关于SAP 开发的实习就要告一段落了,从刚开始接触,到现在已经6个月了,想要很简要的把自己对SAP的理解写出来,便于以后查阅(不定期更新)。 1. 什么是SAP? 广义的SAP,可以指代SAP公司以及SAP的各种产品,它的意义要在特定语境下才能确定。一般我们所说的SAP特指SAP ERP。 SAP ERP(enterprise resource planning)是一个企业信息系统。通过这个系

Remy的博客 1953

redis 数据类型之字符串(string) 详细介绍

字符串(string)键是Redis最基本的键值对类型,这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来,被关联的键和值既可以是普通的文字数据,也可以是图片、视频、音频、压缩文件等更为复杂的二进制数据。

一个火星程序员的专栏 2525

ansys命令流力磁耦合仿真

文章目录前言一、力磁耦合仿真流程二、静力学仿真三、力磁耦合模型构建四、静磁学仿真总结 前言 一、力磁耦合仿真流程 力磁耦合有限元仿真流程中,首先进行静力学仿真,经过前处理模块、分析计算模块和后处理模块提取三维模型单元应力,然后根据力磁耦合方程中,通过matlab将单元应力导入到磁导率与应力的关系式中,得到单元的相对磁导率。最后采用载荷传递耦合方式,进行静磁学模拟仿真,分析计算得到该载荷下试件的磁场分布。,如下图所示为力磁耦合仿真流程图: 二、静力学仿真 下图为中心预制条形缺陷的Q235钢板试..

wsfwsf128的博客 2662

告别云端依赖:手把手教你在Windows 10/11上离线部署WhisperDesktop(含模型下载避坑指南)

本文详细介绍了如何在Windows 10/11上离线部署WhisperDesktop,包括硬件要求、模型下载、环境配置和实战应用。通过本地部署,用户可以实现高效的语音转文字功能,无需依赖云端服务,特别适合注重数据隐私和需要离线工作的场景。

weixin_33736048的博客 322

redis之字符串数据类型

无

qq_44632658的博客 385

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1269

redis(4):数据结构-String字符串

一、热身 二、字符串类型 三、散列类型 四、列表类型 五、集合类型 六、有序集合类型

water Wang 1万+

【MediaPipe实战】从零构建实时人脸关键点检测与表情分析系统

本文详细介绍了如何使用MediaPipe框架从零构建实时人脸关键点检测与表情分析系统。通过Python代码实现,系统能够精准检测468个3D人脸关键点,并实时分析用户表情,适用于智能交互应用。文章包含环境配置、核心实现、可视化技巧及性能优化等实战内容,帮助开发者快速掌握深度学习在计算机视觉中的应用。

weixin_30836759的博客 73

FC7300 SPI MCAL配置引导

Example - QMI8A01z外设:Example - QMI8A01z外设:

舊梦的博客 258

Redis的常用数据结构之字符串类型

可以使用setnx为不存在的key设置过期时间为秒,存在则设置失败。可以通过px milliseconds 为键设置毫秒级过期时间。setrange设置指定字符串位置的字符,下标是从0开始计算的。可以通过nx为已经存在的key设置过期时间,不存在设置失败。可以通过xx为不存在的key设置过期时间,存在设置失败。可以通过ex seconds 为键设置过期时间。可以使用setnx为key设置过期时间为秒。使用incrbyfloat自增浮点数。使用decrby减少指定数字。使用decr进行增加1。

舒一笑的博客 1024

【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分

一 企业级数据中心架构 数据仓库的整体架构,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。 二 DB 三 ETL(Extract-Transform-Load) ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ET

liuchunhang的博客 1289

【redis】Redis五种常用数据类型和内部编码,以及对String字符串类型的总结

目录​编辑 一.五种常用数据类型和内部编码1.五种常用数据类型和内部编码2.内部编码方式1.string 类型 2.hash类型3.list类型4.set类型5.zset(有序集合)类型6.Redis这样设计有两个好处:3.单线程架构 redis单线程为什么可以做到高性能?(面试重点)二.字符串类型的总结1.字符串类型的常用命令1.set 及其选项1.普通的set语句2. nx选项3. xx选项4. ex seconds 或 px milliseconds 选项2.get命令3.mset,mget2.计数命

xiaoxie8023的博客 3444

qt医疗信息系统(HIS)

**UI 组件**: QWidget、QTextBrowser、QTableWidget、QGraphicsView 等。- **网络通信**: Qt Network (TCP/IP)- **DICOM 处理**: DCMTK 3.6.7。- **数据库**: SQLite (轻量、跨平台)**数据库文件**: `hospital.db`- **开发框架**: Qt 6 (C++)- 医疗影像 (DICOM) 查看器。**医疗影像 (DICOM) 查看器****电子病历 (EMR) 浏览器**

寒寒豆豆软件公司的博客 337

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Redis 数据类型 String 字符串

⼀个分布式 Web 服务将⽤⼾的 Session 信息(例如⽤⼾登录信息)保存在各⾃的服务器中,但这样会造成⼀个问题:出于负载均衡的考虑,分布式服务会将⽤⼾的访问请求均衡到不同的服务器上,并且通常⽆法保证⽤⼾每次请求都会被均衡到同⼀台服务器上,这样当⽤⼾刷新⼀次访问是可能会发现需要重新登录,这个问题是⽤⼾⽆法容忍的。由于 Redis 内部存储字符串完全是按照⼆进制流的形式保存的,所以 Redis 是不处理字符集编码问题的,客⼾端传⼊的命令中使⽤的是什么字符集编码,就存储什么字符集编码。

2301_79881188的博客 1194

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Redis入门到精通二】Redis核心数据类型(String,Hash)详解

Redis操作字符串类型常见的有以下命令set,get,mget,mset,setnx,setxx,incr,incrby,decr,decrby,incrbyfloat,append,getrange,setrange,strlen。下面将按顺序依次介绍用法。hash类型的常见命令有hset,hget,hexists,hdel,hkeys,hvals,hgetall,hmget,hlen,hsetnx,hincrby,hincrbyfloat,hstrlen。数字,可以是整型或者浮点型;

2203_75565612的博客 1743

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

redis—String字符串

redis数据类型String字符串详解

终为nullptr 2833

【Redis学习】String字符串

Redis中String类型的相关指令和内部编码情况,及String类型的典型使用场景!!!

2301_80220607的博客 1905

redis 数据类型新手练习系列——string类型

(9)发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的 消息。(11)模块(Modules):Redis 支持动态加载模块,可以扩展 Redis 的功能。(1)string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。(10)流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。(3)list(列表):一个简单的列表,可以存储一系列的字符串元素。(4)set(集合):一个无序集合,可以存储不重复的字符串元素。

hnlucky的博客 867

快速入门Redis系列(2)——Redis的数据类型详解

        作为快速入门Redis系列的第二篇博客,本篇为大家介绍的是Redis的数据类型。         码字不易,先赞后看! 文章目录1. redis的数据类型1.1 redis 当中对字符串string的操作1.2 redis...

大数据梦想家 1万+

【Redis】redis5种数据类型(string)

redis五种数据类型和内部编码的介绍;redis单线程模型的介绍;string字符串类型相关命令:set设置key vlaue,get通过key获取value...以及当value值为整数时,进行加减操作,APPEND追加字符串,GETRANGE获取子串,SETRANGE覆盖子串的一部分,STRLEN获取字符串长度;string内部编码的实现。

lzb_kkk的博客 1169

Redis数据类型之String

如果是以--raw启动客户端,当截取汉字时,由于汉字的存储是字节,因此可能截取不完整的汉字字节,在通过字符集编码utf-8转化,可能会乱码。注意:redis不会对字符集编码做任何处理(也就是redis只认字节不认字符),由于这里使用FinalShell终端连接redis服务器,,而终端默认的字符集编码是utf-8(此编码下一个汉字字符占3个字节),因此使用终端存入汉字到redis中,“张三”就占6个字节。时间复杂度O(N),N表示新value的长度,通常N比较短,因此实际体验是O(1)。

sniper_fandc的博客 955

【Redis】深入探索 Redis 的数据类型 —— 字符串 String

在 Redis 中,所有的 key 的类型都是 string 类型的,并且其他几种数据类型也都是在字符串类型的基础上构建的,例如列表和集合的元素的类型都是字符串类型的。在 Redis 中,字符串都是直接按照二进制的形式储存的,因此在使用 Redis 的时候,不需要像 MySQL 那样考虑编码问题(编码不匹配则会出现乱码)。所以 Redis 不会处理字符集的编码问题,客户端传入的命令中使用的是什么字符集编码,就存储什么字符集编码。

qq_61635026的博客 2269

第五节 Redis 字符串(String)、Redis 哈希(Hash)

第五节 Redis 字符串(String)、Redis 哈希(Hash)

2501_92886572的博客 1218

Redis 7.x 系列【6】数据类型之字符串(String)

在 Redis 中, String 类型是最基本的数据类型,是二进制安全的,可以存储任意类型的数据,文本、数字、图片或者序列化的对象 。

记录知识、锤炼自我 1295
上一篇: 在Python中使用ibis,impyla,pyhive,pyspark连接Kerberos安全认证的Hive、Impala
下一篇: Redis系列(三)、数据类型之哈希Hash
王义凯_Rick
王义凯_Rick 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 858粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值