Redis使用场景

1、缓存
        Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效; 一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中, 因为redis 是放在内存中的可以很高效的访问。

例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。

2、数据共享分布式

String 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享

例如:分布式Session

1

2

3

4

<dependency>

 <groupId>org.springframework.session</groupId>

 <artifactId>spring-session-data-redis</artifactId>

</dependency>

默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上, 这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信 息。

3、排行榜
        在使用传统的关系型数据库(mysql oracle 等)来做这个事儿,非常的麻烦,而利用Redis的SortSet(有序集合) 数据结构能够简单的搞定;

 

 4.抽奖

自带一个随机获得值

1

spop myset

5、购物车

String 或hash。所有String可以做的hash都可以做

  • key:用户id;field:商品id;value:商品数量。
  • +1:hincr。-1:hdecr。删除:hdel。全选:hgetall。商品数:hlen。

6、计算器/限速器

int类型,incr方法
        Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读 写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防 止用户疯狂点击带来不必要的压力;

7、简单消息队列
除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的 需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;

List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间

  • blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

上面的操作。其实就是java的阻塞队列。学习的东西越多。学习成本越低

  • 队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列
  • 栈:先进后出:rpush brpop

8、分布式锁
        分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。可以使用 Redis 自带的 SETNX 命令 实现分布式锁,除此之外,还可以使用官方提供的 RedLock 分布式锁实现。

1

2

3

4

5

6

7

8

9

10

11

public static boolean getLock(String key) {

    Long flag = jedis.setnx(key, "1");

    if (flag == 1) {

        jedis.expire(key, 10);

    }

    return flag == 1;

}

public static void releaseLock(String key) {

    jedis.del(key);

}

String 类型setnx方法,只有不存在时才能添加成功,返回true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值