一口气讲完了Redis常用的数据结构及应用场景

Redis是常用的存储中间件,其高性能和丰富数据结构如字符串、哈希、列表、集合、有序集合和位图广泛应用于缓存、计数、分布式锁等场景。此外,Redis的发布订阅功能支持消息传输。
摘要由CSDN通过智能技术生成

一、概述

Redis是互联网技术领域使用最为广泛的存储中间件,它是Remote Dictionary Service(远程字典服务)的首字母缩写,Redis以其超高的性能、活跃的社区、详细的文档以及丰富的客户端库支持在开源中间件领域广受好评,国内外很多大型互联网都在使用Redis,比如:TwitterGithub、新浪微博、阿里巴巴、京东、Stack Overflow等,可以说,深入了解Redis应用和实践,已成为如今中高级后端加法绕不开的必备技能。

二、Redis常见应用场景

三、Redis有哪些数据结构

3.1 String字符串

🔥字符串典型的使用场景:

  • 单值缓存
  • 对象缓存
  • 计数器
  • 分布式锁

单值缓存

127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> get num
"1"
127.0.0.1:6379>
复制代码

单值缓存

SET user:1 value(json格式数据)
复制代码

计数器

文章阅读量、点赞量、评论量

127.0.0.1:6379> incr article:read:id1
(integer) 1
127.0.0.1:6379> incr article:read:id1
(integer) 2
127.0.0.1:6379> incr article:up:id1
(integer) 1
127.0.0.1:6379> incr article:up:id2
(integer) 1
127.0.0.1:6379> incr article:comment:id1
(integer) 1
127.0.0.1:6379> incr article:comment:id1
(integer) 2
127.0.0.1:6379>
复制代码

分布式锁

  • setnx

定时任务防止同一时刻重复执行,可以在业务执行代码前使用分布式锁控制。

127.0.0.1:6379> setnx job GlobalNotifyJob
(integer) 1
127.0.0.1:6379> get job
"GlobalNotifyJob"
127.0.0.1:6379> ttl job
(integer) -1
127.0.0.1:6379>
复制代码

伪代码如下:

@Slf4j
@Component
public class GlobalNotifyJob {

    private static final String LOCK_KEY = "redis_notify_lock";

    /**
     * 每小时执行一次
     */
    @Scheduled(cron = "0 0 0/1 * * ?")
    public void notify() {
        if (!lockService.grabLock(LOCK_KEY)) {
            log.info("[GlobalNotifyJob] 没有拿到锁, 停止操作......");
            return;
        }
        // 拿到锁,开始执行业务...
    }
}
复制代码
  • setex + 过期时间【SETNX KEY_NAME TIMEOUT VALUE】
127.0.0.1:6379> setex key1 60 value1
OK
127.0.0.1:6379> ttl key1
(integer) 53
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379>
复制代码

hash哈希

🔥哈希典型应用场景:

  • 缓存对象信息(帖子标题、摘要、作者信息)
  • 记录帖子的点赞数、评论数和点击数
  • 电商购物车
命令 描述
HSET key field value 存储一个哈希表key的键值
HSETNX key field value 存储一个不存储的哈希表key的键值
HMSET key field value [field value...] 在一个哈希表key中存储多个键值对
HGET key field value 获取哈希表key对应的field键值
HMGET key field value 批量获取哈希表key中多个field键值
HDEL key field [field ...] 删除哈希表key中多个field的键值
HLEN key 返回哈希表key中field的数量
HGETALL key 返回哈希表key中所有的键值
127.0.0.1:6379> hmset user:1 name austin age 25 address guangzhou ba
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值