Redis的基本用法以及场景分析

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

简介:

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

3、Redis支持数据的备份,即master-slave模式的数据备份。

一、String

Redis 字符串数据类型的相关命令用于管理 redis 字符串值

类比Java:HasMap

Object -->

1、字符串(String)

  • 基本操作:
SET     --存入一个字符串键
SETNX   --存入一个字符串键,若Key存在则操作失败
GET     --获取指定Key的字符串
MSET    --批量存入字符串键
MGET    --批量获取指定Key的字符串
DEL     --删除指定Key(所有类型都可以使用此命令)
  • 应用场景:
    (1)、分布式锁:SETNX(Key, Value),释放锁:DEL(Key)

2、数值(Number)

  • 基本操作:
INCRBY Key increment      --对Key进行数值相加,key不存在则新建
DECRBY Key decrement      --对Key进行数值相减,key不存在则新建
INCR Key            --对Key进行自加1,key不存在则新建
DECR Key            --对Key进行自减1,key不存在则新建
  • 应用场景:
    (1)、文章的浏览量,视频的观看量
    (2)、全局序列

3、二进制(bit)

  • 基本操作:
GETBIT Key offset       --获取Key下标offset的值
SETBIT Key offset value     --对Key下标offset进行设值
BITCOUNT Key [start] [end]    --统计start到end位置设值为1的数量
BITOPS op destkey [key...]    --对多个key进行位计算op(AND/OR/XOR/NOT)
  • 应用场景:
    (1)、存储图片
    (2)、用户在线统计

二、HashMap

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象

类比Java:HashMap>

key - field - value 结构

  • 基本操作:
HSET      --存入一个key filed 散列结构
HSETNX      --存入一个key field,若key中filed已经存在则操作失败
HGET      --获取指定key field
HMSET     --批量存入key filed
HMGET     --批量获取key filed
HDEL      --删除指定Key filed
HINCRBY     --对key field的数值进行加减操作
  • 优点:
    (1)、将信息凝聚在一起,便于管理
    (2)、从一定上避免误操作,减少key冲突
    (3)、减少内存/IO/CPU的消耗
  • 应用场景:
    (1)、购物车功能

三、List

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

类比Java:HasMap

  • 基本操作:
LPUSH Key value [value...]      --往key的列表键中左边放入一个元素,key不存在则新建
RPUSH Key value [value...]      --往key的列表键中右边放入一个元素,key不存在则新建
LPOP Key              --从key的列表键最左端弹出一个元素
RPOP Key              --从key的列表键最右端弹出一个元素
LRANGE Key start stop       --获取列表键从start下标到stop下标的元素
BLPOP Key [Key...] timeout      --阻塞的从key的列表键最左端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞
BRPOP Key [Key...] timeout      --阻塞的从key的列表键最右端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞
  • 应用场景:
    (1)、消息队列
    (2)、新闻推荐

四、Set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据

类比Java:HasMap

  • 基本操作:
SADD Key member [member...]     --往集合键key中存放元素,若key不存在则新建
SREM Key member [member...]     --从集合键key中删除元素
SMEMBERS Key            --获取集合键key中的所有元素
SCARD Key             --获取集合键key中的元素个数
SISMEMBER Key member        --判断{member}元素是否存在于集合键key中
SRANDMEMBER Key [count]       --从集合键key中选出{count}个元素,不从集合键key中删除
SPOP Key [count]          --从集合键key中选出{count}个元素,并且从集合键key中删除
  • 应用场景:
    (1)、抽奖
    (2)、点赞,转发,收藏
  • 集合运算:
SINTER Key [Key...]             --交集运算
SINTERSTORE destination key [key...]    --交集运算,运算结果保存在集合键destination中
SUNION Key [Key...]             --并集运算
SUNIONSTORE destination Key [Key...]    --并集运算,运算结果保存在集合键destination中
SDIFF Key [Key...]              --差集运算
SDIFFSTORE destination key [key...]     --差集运算,运算结果保存在集合键destination中
  • 应用场景:
    (1)、共同关注
    (2)、可能认识的人
    (3)、我关注的人也关注了他
    (4)、商品筛选

五、ZSet

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员

  • 基本操作:
ZADD Key score element [...]      --往有序集合键key中存放元素,若key不存在则新建
ZREM Key element [element...]     --从有序集合键key中删除元素
ZSCORE Key element            --获取有序集合键key中{element}元素的score值
ZINCRBY Key increment element     --给有序集合键key中{element}元素进行score值操作,若key不存在则新建,{element}元素不存在则新增后进行score值操作
ZCARD Key               --获取有序集合键key中元素个数
ZRANGE Key start stop [WITHSCORES]    --正序获取有序集合键key中从start下标到end下标的元素
ZREVRANGE Key start stop [WITHSCORES] --倒序获取有序集合键key中从start下标到end下标的元素
  • 集合运算:
ZUNIONSTORE destkey numkeys key [key...]  --并集运算
ZINTERSTORE destkey numkeys key [key...]  --交集运算
  • 应用场景:
    (1)、排行榜,热搜榜
    (2)、周榜,月榜,年榜
相关实践学习
基于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 Java
场景题:百万数据插入Redis有哪些实现方案?
场景题:百万数据插入Redis有哪些实现方案?
55 1
场景题:百万数据插入Redis有哪些实现方案?
|
2天前
|
缓存 NoSQL 架构师
Redis批量查询的四种技巧,应对高并发场景的利器!
在高并发场景下,巧妙地利用缓存批量查询技巧能够显著提高系统性能。 在笔者看来,熟练掌握细粒度的缓存使用是每位架构师必备的技能。因此,在本文中,我们将深入探讨 Redis 中批量查询的一些技巧,希望能够给你带来一些启发。
45 23
Redis批量查询的四种技巧,应对高并发场景的利器!
|
3月前
|
存储 NoSQL Redis
Redis 新版本引入多线程的利弊分析
【10月更文挑战第16天】Redis 新版本引入多线程是一个具有挑战性和机遇的改变。虽然多线程带来了一些潜在的问题和挑战,但也为 Redis 提供了进一步提升性能和扩展能力的可能性。在实际应用中,我们需要根据具体的需求和场景,综合评估多线程的利弊,谨慎地选择和使用 Redis 的新版本。同时,Redis 开发者也需要不断努力,优化和完善多线程机制,以提供更加稳定、高效和可靠的 Redis 服务。
94 1
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
92 6
|
2月前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
87 8
|
2月前
|
缓存 监控 NoSQL
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
66 5
|
3月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
98 4
|
3月前
|
存储 消息中间件 NoSQL
【redis】redis的特性和主要应用场景
【redis】redis的特性和主要应用场景
235 1
|
4月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
844 2
|
4月前
|
存储 Prometheus NoSQL
Redis 内存突增时,如何定量分析其内存使用情况
【9月更文挑战第21天】当Redis内存突增时,可采用多种方法分析内存使用情况:1)使用`INFO memory`命令查看详细内存信息;2)借助`redis-cli --bigkeys`和RMA工具定位大键;3)利用Prometheus和Grafana监控内存变化;4)优化数据类型和存储结构;5)检查并调整内存碎片率。通过这些方法,可有效定位并解决内存问题,保障Redis稳定运行。
267 3