Redis常见问题

本文总结了Redis的常见问题,包括为何使用Redis、数据类型及其应用场景、过期策略和内存淘汰机制、数据库双写一致性问题、缓存穿透和缓存雪崩的解决方案以及并发竞争Key的处理。Redis主要应用于提高性能和并发处理,其数据类型如String、Hash、List等各有用途。在内存管理上,Redis采用定期删除+惰性删除策略,同时有多种内存淘汰策略以应对内存不足的情况。针对并发Key操作,文章建议根据需求选择分布式锁或事务机制。
摘要由CSDN通过智能技术生成

在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知, 这里对 Redis 常见问题做一个总结。

1、 为什么使用Redis?

在项目使用redis,主要是考虑性能和并发。
项目中我们碰到需要执行很久的并且结果不频繁变动的查询时,就可以将结果集放在redis缓存中,之后的请求就会到缓存中读取,没有所需结果再去数据库查询。极大的提高了性能,使得请求能够迅速响应。
在并发性比较高的情况所有的请求直接访问数据库可能会导致数据库连接异常,利用redis缓存,使得请求先访问redis,不直接访问数据库。

使用Redis常见问题

2、Redis的数据类型以及使用场景

String

string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据,value只最多是512M。常规set/get操作,对应的值可以是string也可以是数字。一般做一些计数功能的缓存、手机验证码缓存

@Test
    public void testString() {
        // 添加一条数据
        jedis.set("username", "zhangsan");
        jedis.set("age", "18");
        // 添加多条数据 参数奇数为 key 参数偶数为 value
        jedis.mset("address", "bj", "sex", "1");
        // 获取一条数据
        String username = jedis.get("username");
        System.out.println(username);
        // 获取多条数据
        List<String> list = jedis.mget("username", "age", "address", "sex");
        for (String str : list) {
            System.out.println(str);
        }
        // 删除
        //jedis.del("username");
    }
Hash

存放的值是对象,比较方便操作对象的属性字段。在做单点登录时,以CookieId为key,值可以用这种数据结构存储用户相关信息,设置对应过期时间可以做出类似session过期的效果。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值