redis数据类型-字符串类型

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis数据类型字符串类型字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON化的对象甚至是一张图片。一个字符串类型键允许存储的数据的最大容量是512MB。

Redis数据类型

字符串类型

字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON化的对象甚至是一张图片。一个字符串类型键允许存储的数据的最大容量是512MB

注释:在Redis 3.0版本中可能会放宽这一限制,但无论如何,考虑到Redis的数据是使用内存存储的, 512MB的限制已经非常宽松了。

字符串类型是其他4种数据类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。例如,列表类型是以列表的形式组织字符串,而集合类型是以集合的形式组织字符串。

如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了。这说明strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。

赋值与取值

  • SET key value
  • GET key
  • SET和GET是Redis中最简单的两个命令,它们实现的功能和编程语言中的读写变量相似,如key="hello"在Redis中是这样表示的:

    redis> SET key hello
    OK
    想要读取键值则更简单:
    redis> GET key
    "hello"

    当键不存在时会返回空结果。
    递增数字
    INCR key
    前面说过字符串类型可以存储任何形式的字符串,当存储的字符串是整数形式时, Redis
    提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值,用法为:

    redis> INCR num
    (integer) 1
    redis> INCR num
    (integer) 2

    当要操作的键不存在时会默认键值为0,所以第一次递增后的结果是1。当键值不是整数时Redis会提示错误:

    redis> SET foo lorem
    OK
    redis> INCR foo
    (error) ERR value is not an integer or out of range

增加指定的整数

INCRBY key increment
INCRBY命令与INCR命令基本一样,只不过前者可以通过increment参数指定一次增加的
数值,如:
redis> INCRBY bar 2
(integer) 2

减少指定的整数

  • DECR key
  • DECRBY key decrement
  • DECR命令与INCR命令用法相同,只不过是让键值递减,例如:

    redis> DECR bar
    (integer)4

    而DECRBY命令的作用不用介绍想必读者就可以猜到, DECRBY key 5 相当于INCRBY key -5。

增加指定浮点数

INCRBYFLOAT key increment
INCRBYFLOAT 命令类似INCRBY命令,差别是前者可以递增一个双精度浮点数,如:

redis> INCRBYFLOAT bar 2.7
"6.7"
redis> INCRBYFLOAT bar 5E+4
"50006.69999999999999929"

向尾部追加值

APPEND key value
APPEND作用是向键值的末尾追加value。如果键不存在则将该键的值设置为value,即相
当于SET key value。返回值是追加后字符串的总长度。例如:

redis> SET key hello
OK
redis> APPEND key " world!"
(integer) 12

此时key的值是"hello world!"。 APPEND命令的第二个参数加了双引号,原因是该参数包
含空格,在redis-cli中输入需要双引号以示区分。

获取字符串长度

STRLEN key
STRLEN命令返回键值的长度,如果键不存在则返回0。例如:
redis> STRLEN key
(integer)12
redis> SET key 你好
OK
redis> STRLEN key
(integer)6

前面提到了字符串类型可以存储二进制数据,所以它可以存储任何编码的字符串。例子
中 Redis接收到的是使用UTF-8编码的中文,由于“你”和“好”两个字的UTF-8编码的长度都是3,所以此例中会返回6。

同时获得/设置多个键值

MGET key [key …]
MSET key value [key value …]
MGET/MSET与GET/SET相似,不过MGET/MSET可以同时获得/设置多个键的键值。例
如:
redis> MSET key1 v1 key2 v2 key3 v3
OK
redis> GET key2
"v2"
redis> MGET key1 key3
1) "v1"
2) "v3"
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
存储 缓存 NoSQL
redis数据结构-字符串
redis数据结构-字符串
38 1
|
10天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
24 1
|
21天前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
29天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
37 4
|
30天前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
36 1
|
1月前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
37 2
|
1月前
|
存储 NoSQL Redis
redis-set类型
【10月更文挑战第6天】
38 1
|
1月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
27 3
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
大数据-41 Redis 类型集合(2) bitmap位操作 geohash空间计算 stream持久化消息队列 Z阶曲线 Base32编码
27 2
|
20天前
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树