Redis深度解析:核心数据类型之string

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 数据类型包括String、Hash、List、Set和Sorted Set。对于String类型的主要操作,此外,还有通用的Key操作。

redis数据类型

string

1. 设置单个字符串数据

set 设置的数据没有额外操作时,是不会过期的。
语法:set key value

例如:设置键为name值为xiaoming的数据,如果name存在,则表示修改name的值,如果name不存在,则表示添加一个key为name,value为"xiaoming"。

set name xiaoming

2.设置多个字符串类型的数据

语法:mset key1 value1 key2 value2 ...

例如:设置键为a1值为python、键为a2值为java、键为a3值为c

mset a1 python a2 java a3 c

3.字符串拼接值

append的key如果不存在,则相当于set添加了一个字符串数据。
语法:append key value

例如:向键为a1中拼接值haha

append title "我的"
append title "redis"
append title "学习之路"

4.根据键获取字符串的值

根据键获取值,如果不存在此键则返回nil,相当于python的None
语法:get key

例如:获取键name的值

get name

5.根据多个键获取多个值

语法:mget key1 key2 ...

例如:获取键a1、a2、a3的值

mget a1 a2 a3

6.自增自减

set num 1
incr num   # 相当于num+=1
get num    # 2
incr num   # 相当于num+=1
get num    # 3

set goods:10 100
decr goods:10  # 相当于 goods:10-=1
get goods:10    # 99
decr goods:10   # 相当于goods:10-=-1
get goods:10    # 98

7.获取字符串的长度

set name xiaoming
strlen name  # 8

8.比特流操作

使用场景:签到记录、布隆过滤器(防止缓存击穿的一种防范手段)、打卡记录、心跳检测。

命令 描述
BITCOUNT 统计字符串的值被设置为1的bit数.
BITPOS 返回字符串里面第一个被设置为1或者0的bit位。
SETBIT 设置一个bit数据的值
GETBIT 获取一个bit数据的值
# 假设做一个签到功能,记录用户一年内的所有签到次数。
# 签到,id为1的用户2022年第7天签到
setbit user:1:checkin:2022 7 1   
# 00000001

# 查询,用户1在2022年第7天是否上班
getbit user:1:checkin:2022 7
# 1

# 查询,用户1在2022年第3天是否上班
getbit user:1:checkin:2022 3
# 0

# 补签,用户1在2022年第4天补签
setbit user:1:checkin:2022  4 1
# 00001001

# 签到,用户1在2022年第15天签到
setbit user:1:checkin:2022 15 1
# 0000100100000001

# 统计,用户1在2022年一共签到了多少天
bitcount user:1:checkin:2022
# 3

# 查询,首次签到是什么时候
bitpos user:1:checkin:2022 1
# 4

key操作

    redis中所有的数据都是通过key(键)来进行操作,这里是一些关于任何数据类型都通用的命令。

a.查找键

参数支持简单的正则表达式:keys pattern
查看所有键:keys *

例如:

# 查看名称中包含`e`的键
keys *e*
# 查看以n开头的键
keys n*
# 查看以数字结尾的键
keys *[1-9]
# 查看2022年所有用户的签到记录的key列表
keys user:*:checkin:2022

b.设置键值的过期时间

redis中可以对一切的数据进行设置有效期,不仅是string,还包括其他的四种数据类型。
语法:setex key seconds value

例如:设置键为name值为xiaoming过期时间为20秒的数据

setex name 20 xiaoming

c.查看键的有效期

语法:ttl key

  • 结果是秒作为单位的整数
  • -1 表示永不过期
  • -2 表示当前数据已经过期,查看一个不存在的数据的有效期就是-2

d.设置key的有效期

给已有的数据重新设置有效期,redis中所有的数据都可以通过expire来设置它的有效期。
语法:expire key seconds

例如:设置一个hash数据的有效期为30秒

hset person:1 name xiaoming age 17
expire person:1  30

ttl person:1
# 30

e.判断键是否存在

  • 在redis中如果key没有被设置或者过期了,则key不存在。
  • 可以使用exists key来判断,如果存在返回1,不存在返回0

例如:判断键title是否存在

exists title

f.查看键的数据类型

语法:type key

  • none 空,当前数据不存在
  • string 字符串
  • hash 哈希类型
  • list 列表类型
  • set 无序集合
  • zset 有序集合

g.查看键的值数据类型

set name xiaoming
type name
# string

sadd member_list xiaoming xiaohong xiaobai
# (integer) 3
type member_list
# set

hset user_1 name xiaobai age 17 sex 1
# (integer) 3
type user_1
# hash

lpush brothers zhangfei guangyu liubei xiaohei
# (integer) 4
type brothers
# list

zadd achievements 61 xiaoming 62 xiaohong 83 xiaobai  78 xiaohei 87 xiaohui 99 xiaolong
# (integer) 6
type achievements
# zset

h.key重命名

改变key的名称,但是不会修改值。
语法:rename 旧的key 新的key

例如:把name重命名为username

set name xioaming
rename name username
get username

i.删除键以及键对应的值

删除key表示可以删除任意类型的数据。
语法:del key

# 删除一个key
del name

# 删除多个key
del title num

j.清空所有key

慎用,一旦执行,则redis所有数据库0~15的全部key都会被清除
语法:flushall

k.select切换数据库

redis的配置文件中,默认有0~15之间的16个数据库,默认操作的就是0号数据库
语法:select <数据库ID>

# 默认处于0号库
127.0.0.1:6379> select 1
OK
# 这是在1号库
127.0.0.1:6379[1]> set name xiaoming
OK
127.0.0.1:6379[1]> select 2
OK
# 这是在2号库
127.0.0.1:6379[2]> set name xiaohei
OK

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
SQL 安全 数据格式
PEP 750 t-string 深度解析:与 f-string 的差异与进化
Python 3.14 即将引入的 t-string(模板字符串)是字符串处理的重大革新。作为 f-string 的继任者,t-string 通过延迟渲染机制重新定义了字符串模板处理方式。本文从核心机制(即时求值 vs 延迟渲染)、技术特性(语法到语义进化)、应用场景(安全敏感场景、复杂模板系统等)及性能兼容性等方面深入解析,展示其在安全框架、代码生成等领域的广阔前景。开发者可根据需求选择 f-string 或 t-string,实现更高效、可控的字符串处理。
82 13
|
7月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
285 85
|
4月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
109 9
|
4月前
|
NoSQL Redis
Redis的常用数据类型有哪些 ?
Redis 有 5 种基础数据结构,它们分别是:string(字符串)、list(列表)、hash(字典)、set(集 合) 和 zset(有序集合)
|
7月前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
118 5
|
8月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
282 7
|
8月前
|
存储 Java 对象存储
String 属于基础的数据类型吗
String 在多数编程语言中被视为一种基础数据类型,但实际上它是由字符组成的序列。在一些语言中,如 Java 和 Python,String 被设计为不可变的对象,以简化编程和提高安全性。
134 6
|
8月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
149 1
|
9月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
111 4
|
9月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
106 1

热门文章

最新文章

推荐镜像

更多
  • DNS