当前位置: 首页 > ops >正文

Redis7 String类型数据

Redis 中的 String 类型是最基本的数据类型,用于存储字符串、整数或浮点数。它支持多种操作,包括设置值、获取值、增量操作、位操作等。String 类型的值最大可存储 512MB 的数据。以下是详细用法和示例:

1. 基本命令
  • 设置值:使用 SET 命令设置键值对。
    • 示例:SET mykey "Hello"(设置键 mykey 的值为 "Hello")。
  • 获取值:使用 GET 命令获取键的值。
    • 示例:GET mykey(返回 "Hello")。
  • 追加字符串:使用 APPEND 在现有值后追加内容。
    • 示例:APPEND mykey " World"(值变为 "Hello World")。
  • 获取字符串长度:使用 STRLEN 获取值的长度。
    • 示例:STRLEN mykey(返回 11)。
2. 数值操作

String 类型可以存储整数或浮点数,并支持数学运算:

  • 增量操作
    • INCR key:将键的值增加 1(值必须是整数)。
      • 示例:SET counter 100 后执行 INCR counter(值变为 101)。
    • INCRBY key increment:增加指定整数,例如增加 $5$。
      • 示例:INCRBY counter 5(值从 101 变为 106)。
    • DECR keyDECRBY key decrement:类似地减少值。
  • 浮点数操作:使用 INCRBYFLOAT key increment 增加浮点数。
    • 示例:SET floatkey 10.5 后执行 INCRBYFLOAT floatkey 2.5(值变为 13.0)。
3. 位操作

String 类型支持位级别的操作,适用于二进制数据:

  • SETBIT key offset value:设置键的二进制位(offset 为偏移量,value 为 0 或 1)。
    • 示例:SETBIT flags 0 1(设置第一个位为 1)。
  • GETBIT key offset:获取指定偏移量的位值。
    • 示例:GETBIT flags 0(返回 1)。
  • BITCOUNT key:统计值为 1 的位数量。
4. 其他实用命令
  • MSETMGET:同时设置或获取多个键值对。
    • 示例:MSET key1 "A" key2 "B"MGET key1 key2(返回 ["A", "B"])。
  • SETEX key seconds value:设置值并指定过期时间(秒)。
    • 示例:SETEX tempkey 60 "temp"(60 秒后自动删除)。
  • SETNX key value:仅当键不存在时设置值(用于实现锁)。
5. Python 代码示例

以下是一个使用 Python 的 redis-py 库操作 String 类型的示例:

import redis# 连接到 Redis 服务器
r = redis.Redis(host='localhost', port=6379, db=0)# 设置和获取值
r.set('greeting', 'Hello Redis')
print(r.get('greeting'))  # 输出: b'Hello Redis'# 数值操作
r.set('counter', 10)
r.incrby('counter', 5)  # 增加 5
print(r.get('counter'))  # 输出: b'15'# 位操作
r.setbit('flags', 0, 1)  # 设置第一个位为 1
print(r.getbit('flags', 0))  # 输出: 1

注意事项
  • 数据类型限制:String 值可以是字符串、整数或浮点数,但操作命令需匹配类型(例如,INCR 要求整数)。
  • 最大长度:单个 String 值最大为 512MB。
  • 性能:所有 String 操作的时间复杂度非常高效。
  • 适用场景:缓存、计数器、分布式锁、位图处理等。
http://www.xdnf.cn/news/16837.html

相关文章:

  • 【iOS】KVO
  • MyBatisPlus之CRUD接口(IService与BaseMapper)
  • 28Rsync免密传输与定时备份
  • 关于Web前端安全防御XSS攻防的几点考虑
  • Spring Boot 全 YAML 配置 Liquibase 教程
  • C++之vector类的代码及其逻辑详解 (中)
  • DockerFile文件执行docker bulid自动构建镜像
  • CMake指令:mark_as_advanced
  • Python序列去重高级指南:保持顺序的高效去重技术
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • 云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
  • 分类任务当中常见指标 F1分数、recall、准确率分别是什么含义
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【贪心】P11112 [ROI 2024] 机器人物流 (Day 1)|普及+
  • 基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用
  • Java函数式编程之【Stream终止操作】【下】【二】【收集器toMap()】【叁参数收集操作collect()】
  • Maven项目和Spring项目的异同
  • 企业资产|企业资产管理系统|基于springboot企业资产管理系统设计与实现(源码+数据库+文档)
  • Docker容器中文PDF生成解决方案
  • 计算机网络:为什么IPv6没有选择使用点分十进制
  • Pytorch-02数据集和数据加载器的基本原理和基本操作
  • Matplotlib - Python图表可视化利器
  • 面试小总结
  • vue引入阿里巴巴矢量图库的方式
  • 内网穿透系列十:高性能内网穿透工具 rathole,支持Docker一键部署
  • ubuntu 系统风扇控制软件 CoolerControl
  • AI驱动SEO关键词智能进化
  • Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法
  • Python 第一阶段测试题 答案及解析
  • 【正点原子K210连载】第二十四章 按键输入实验 摘自【正点原子】DNK210使用指南-CanMV版指南