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

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.dtcms.com/a/312122.html

相关文章:

  • 梦幻花瓣雨
  • spring学习笔记二
  • MC0364魔法链路
  • 全排列(回溯算法)
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • 力扣-230.二叉搜索树中第K小的元素
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • Amazon Q Developer:AI 增强编码生产力的未来
  • Arpg第二章——流程逻辑
  • 第六章第二节 定时器定时中断 定时器外部时钟
  • 电子病历:现代HIS系统不可或缺的核心组成部分
  • 12:java学习笔记:多维数组1
  • yolo为什么可以作为目标检测框架?它的底层原理是什么?
  • 客流人数统计准确率↑22%:陌讯动态追踪融合算法实战解析
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • OSPF综合实验(一)
  • 分享一个可以测试离线服务器性能的脚本
  • 八股训练--JUC
  • 包装类、日期等常用类型
  • C语言数据结构(5)双向链表
  • 深入剖析Nacos:云原生架构的基石
  • Python编程基础与实践:Python基础数据类型入门
  • 中国工程院郑裕国院士确认出席:2025第五届生物发酵营养源高峰论坛生物发酵展
  • CMake基础使用指南
  • QtC++ 调用 tesseract开源库 搭配 Opencv 实现文字识别:从tesseract库基本介绍到实际应用实现
  • 【华为OD机试】计算图形面积
  • 关于Egret引擎的一些思考
  • 单位长度上的RC参数
  • 【补题】Codeforces Round 715 (Div. 1) B. Almost Sorted
  • linux中pthread_t 的值与top -Hp中线程id值的区别