Redis 数据类型之string/list/hash

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文目录1. Redis中的键2. Redis中的值3. 字符串类型string4. 列表类型list5. 哈希类型hash

1. Redis中的键

Redis是键值型数据库,Redis中的键只有一个类型,就是字符串。


2. Redis中的值

Redis值支持的类型有以下几种:


字符串类型 string

列表类型 list

集合类型 set

有序集合类型 sorted set

哈希类型 hash

HyperLogLog类型

Geo类型

3. 字符串类型string

1、字符串类型的存取操作,注意set执行成功会返回OK。


127.0.0.1:6379> set name "maoge"

OK

127.0.0.1:6379> get name

"maoge"


2、如果键不存在,则返回nil。


127.0.0.1:6379> get test

(nil)


3、使用strlen可以获取字符串长度,当键不存在时返回0。


127.0.0.1:6379> strlen name

(integer) 5

127.0.0.1:6379> strlen test

(integer) 0


4、如果键已存在,再次执行set,则覆盖键对应的值。


127.0.0.1:6379> set name "maoge"

OK

127.0.0.1:6379> set name "halo"

OK

127.0.0.1:6379> get name

"halo"


5、使用setnx,当键不存在时为其设值,此时返回1;当键已存在则不改变键对应的值,返回0。


127.0.0.1:6379> setnx country "china"

(integer) 1

127.0.0.1:6379> get country

"china"

127.0.0.1:6379> setnx country "usa"

(integer) 0

127.0.0.1:6379> get country

"china"


6、使用mset/mget可以进行批量操作,这样可以节省客户端和服务器之间的通信开销。


127.0.0.1:6379> mset age "12" sex "man"

OK

127.0.0.1:6379> mget age sex

1) "12"

2) "man"


4. 列表类型list

常用操作如下:


lrange 显示指定索引范围的元素(从0开始算)

lpush 左侧插入元素,返回插入后列表长度

rpush 右侧插入元素,返回插入后列表长度

lpop 左侧弹出元素

rpop 右侧弹出元素

注意,向不存在的键插入元素,Redis会自动创建list;如果列表为空,Redis会自动回收该键。实例如下:


127.0.0.1:6379> lrange studetns 0 1

(empty list or set)

127.0.0.1:6379> lpush students "zhangsan"

(integer) 1

127.0.0.1:6379> rpush students "lisi"

(integer) 2

127.0.0.1:6379> lrange students 0 1

1) "zhangsan"

2) "lisi"

127.0.0.1:6379> lpop students

"zhangsan"

127.0.0.1:6379> rpop students

"lisi"

127.0.0.1:6379> lrange students 0 1

(empty list or set)


5. 哈希类型hash

注意Redis数据集本身即是一个hash结构,类似于java中的map。


此处的哈希类型,指的是,Redis键对应的值的部分,依然是一个哈希类型。


1、hset设置单个哈希字段的值


127.0.0.1:6379> hset city beijing "001"

(integer) 1

127.0.0.1:6379> hset city shanghai "002"

(integer) 1


2、hget获取单个哈希字段对应的值


127.0.0.1:6379> hget city beijing

"001"


3、hexists测试哈希字段是否存在


127.0.0.1:6379> hexists city beijing

(integer) 1

127.0.0.1:6379> hexists city tianjin

(integer) 0


4、hgetall获取哈希所有字段值


127.0.0.1:6379> hgetall city

1) "beijing"

2) "001"

3) "shanghai"

4) "002"


5、删除哈希字段


127.0.0.1:6379> hdel city beijing

(integer) 1

127.0.0.1:6379> hget city beijing

(nil)


6、批量设置、获取哈希字段


127.0.0.1:6379> hmset city nanjing "003" shenzhen "004"

OK

127.0.0.1:6379> hmget city nanjing shenzhen

1) "003"

2) "004"

相关文章
|
2月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
8月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
249 9
|
12月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
696 7
|
12月前
|
存储 Java 对象存储
String 属于基础的数据类型吗
String 在多数编程语言中被视为一种基础数据类型,但实际上它是由字符组成的序列。在一些语言中,如 Java 和 Python,String 被设计为不可变的对象,以简化编程和提高安全性。
274 6
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
172 2
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
257 5
|
5月前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
142 0
|
8月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
220 11
|
8月前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
152 1