首页 > 数据库 >Redis从入门到放弃(2):数据类型

Redis从入门到放弃(2):数据类型

时间:2023-09-12 10:45:07浏览次数:50  
标签:有序 入门 数据类型 元素 Redis 列表 类型 哈希 集合

Redis从入门到放弃(2):数据类型

 

在Redis中,数据以键值对的形式存储。Redis支持五种主要的数据类型,每种类型都有不同的用途和特性。

本文将介绍Redis的五种数据类型:字符串(string),哈希(hash),列表(list),集合(set)和有序集合(sorted set)。

1. 字符串(String)

介绍

字符串是Redis中最基本的数据类型。每个键都可以关联一个字符串值,这个值可以是任何类型的数据,如文本、数字或序列化的对象。字符串类型支持一系列的操作,包括设置值、获取值、修改值以及对值进行计数和排序等。

命令示例

# 设置键的值
SET mykey "Hello Redis"

# 获取键的值
GET mykey

# 修改键的值
SET mykey "Updated value"

# 对值进行递增
INCR counter

# 对值进行排序
SORT mylist

注意事项

  • 字符串类型的值最大可以存储512MB的数据。
  • INCR 命令作用于非整型时会报错:(error) ERR value is not an integer or out of range

2. 哈希(Hash)

介绍

哈希类型在Redis中用于存储对象。一个哈希类型的键关联了一个键值对集合,其中每个键值对都是一个字段和值的组合。哈希类型适合存储结构化的数据,如用户信息、文章内容等。类似于Java的Map。

命令示例

# 设置哈希键中的字段值
HSET user:1 name "John"
HSET user:1 age 30

# 获取哈希键中的字段值
HGET user:1 name

# 删除哈希键中的字段及其值
HDEL user:1 age

# 获取哈希键中所有的字段和值
HGETALL user:1

注意事项

  • HSET 命令不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存在来决定要执行的是插入还是更新操作。

3. 列表(List)

介绍

列表类型是一个有序的字符串集合。列表中的每个元素都有一个索引,可以根据索引进行访问和操作。列表类型支持在头部和尾部进行元素的插入和删除操作,可以实现队列、栈等数据结构。

命令示例

# 将值插入列表的头部
LPUSH mylist "one"
LPUSH mylist "two"

# 将值插入列表的尾部
RPUSH mylist "three"
RPUSH mylist "four"

# 从列表的头部弹出一个值
LPOP mylist

# 从列表的尾部弹出一个值
RPOP mylist

# 获取列表中指定范围内的元素
LRANGE mylist 0 -1

注意事项

  • 列表类型的元素可以重复。
  • 列表类型支持按索引进行快速访问和操作。
  • 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

4. 集合(Set)

介绍

集合类型是一个无序、唯一的字符串集合。集合中的元素没有重复,可以进行交集、并集、差集等集合运算。集合类型适合存储不重复的元素,如标签、用户的兴趣爱好等。

命令示例

# 向集合添加一个成员
SADD tags "redis"
SADD tags "database"

# 从集合中移除一个成员
SREM tags "database"

# 获取集合中的所有成员
SMEMBERS tags

# 获取多个集合的交集
SINTER set1 set2

注意事项

  • 集合类型的元素是无序的,不支持按索引访问。
  • 集合类型是通过哈希表实现的,操作具有高效的性能,可以快速执行集合运算。

5. 有序集合(Sorted Set)

介绍

有序集合类型是一个有序的字符串集合,每个元素都与一个分数相关联。有序集合中的元素按照分数进行排序,并且每个元素都是唯一的。有序集合类型适合存储排行榜、排序结果等需要按照顺序访问的数据。

命令示例

# 向有序集合添加一个成员,并指定其分数
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"

# 从有序集合中移除一个成员
ZREM leaderboard "player2"

# 获取有序集合中指定范围内的成员
ZRANGE leaderboard 0 -1

# 获取有序集合中指定成员的分数
ZSCORE leaderboard "player1"

注意事项

  • 有序集合类型的元素按照分数进行排序,可以根据分数范围快速获取成员。
  • 有序集合类型的操作具有高效的性能,可以快速执行排序和排名相关的操作。

6、总结

以表格方式总结:

类型简介特性场景
String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M ---
Hash(字典) 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性
List(列表) 链表(双向链表) 增删快,提供了操作某一段元素的API 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
Set(集合) 哈希表实现,元素不重复 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合) 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列
  分类: 编程语言

标签:有序,入门,数据类型,元素,Redis,列表,类型,哈希,集合
From: https://www.cnblogs.com/sexintercourse/p/17695438.html

相关文章

  • Redis从入门到放弃(1):安装配置
    Redis从入门到放弃(1):安装配置 1.介绍Redis是一个高性能的开源key-value数据库。它被广泛应用于缓存、会话存储、实时分析、消息队列等场景。Redis具有以下三个主要特点:数据持久化:Redis支持将内存中的数据保存到磁盘上,确保数据在断电或重启后不丢失。多样数据结构:除了支持......
  • Redis缓存数据和表数据一致性之延时双删策略
    一、什么是Redis延时双删?1、延迟双删策略是分布式系统中数据库存储和缓存数据保持一致性的常用策略,但它不是强一致。不管哪种方案,都无法绝对避免Redis存在脏数据的问题,只能减轻这个问题2、因为双删策略执行的结果是把redis中保存的那条数据删除了,以后的查询就都会去查询数据库......
  • Redis.conf 详解
    一、NETWORK网络bind127.0.0.1#绑定的IPprotected-modeno#保护模式port6379#端口设置二、GENERAL通用daemonizeyes#以守护进程的方式运行,默认是no,我们需要自己开启为yespidfile/var/run/redis_6379.pid#如果是后台启动,我们需要指定一个pid文......
  • 我是如何用 redis 分布式锁来解决线上历史业务问题的
    近期发现,开发功能的时候发现了一个mq消费顺序错乱(历史遗留问题),导致业务异常的问题,看看我是如何解决的问题抛出首先,简单介绍一下情况:线上k8s有多个pod会去消费mq中的消息,可是生产者发送的消息是期望一定要有序去消费,此时要表达的是,例如生产者如果发送了3个通知消息,分......
  • Redis7 10大数据类型(概述)
    一、概述二、数据类型1、redis字符串(String)String(字符串)string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是51......
  • 3. Java数据类型
    Java数据类型:基本数据类型和引用数据类型前面我们提到 Java 语言是强类型语言,编译器存储在变量中的数值具有适当的数据类型。学习任何一种编程语言都要了解其数据类型,本文将详细介绍Java中的数据类型。Java语言支持的数据类型分为两种:基本数据类型(PrimitiveType)和引用数据......
  • Redis为什么这么快?
    面试官:Redis为什么这么快?(qq.com)”因为它是内存数据库,不用往硬盘上写,所以快啊““基于内存实现”这个原因就不详细展开了哈,毕竟地球人都懂。空间换时间——SDS数据结构这里所说的空间为”内存空间“。Redis是用C语言写的,但它的String数据类型,并没有直接用C语言中的char*......
  • 【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error
    问题描述使用Redis-cli连接Redis服务,因为工具无法直接支持TLS6380端口连接,所以需要使用stunnel配置TLS/SSL服务。根据文章(LinuxVM使用6380端口(SSL方式)连接AzureRedis(redis-cli&stunnel):https://www.cnblogs.com/lulight/p/14188279.html),配置stunnel后,始终无法连接成......
  • 逻辑回归入门介绍
    本文所有内容整理自网络。完整内容可以点击这里获取:完整资料下载地址Logistic回归是一种监督式机器学习算法,主要用于分类任务,其目标是预测一个实例属于给定类别的概率。它是一种统计算法,用于分析一组自变量与依赖的二进制变量之间的关系。它是一种强大的决策工具,例如用于判断电子邮......
  • Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案
    缓存击穿,缓存穿透,缓存雪崩的原因缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存......