美文网首页
redis面试获取缓存键

redis面试获取缓存键

作者: gzss | 来源:发表于2019-06-03 22:10 被阅读0次

            初看这个题目,很自然的想到使用redis的keys命令即可得到缓存中键的值,但是如果更进一步如果缓存中的键过大时会不会产生问题,以及解决方式是怎样的?

            我们简单分析下这个问题点,首先缓存的键比较大或者说比较多的情况,因为redis是单线程模型,缓存过大时使用keys命令会使redis出现卡顿现象。此时使用keys来获取键的值就不是一个好的方式。这种情况我们可以使用scan命令来获取。

            scan是采用迭代的方式来获取缓存中键的值,每次查询的数量不一定,但是可以设置一个参数在控制每次查询的数量接近于这个数,即当你设置查询的数量为10时,那每次查询出来的数量可能是8,7,11,反正就接近于这个数,所以在数据量大的时候使用scan,当数据量小时可以使用keys。

        具体使用方式如下简单代码:

        public classTest{

        public static void main(String[] args) {

            Set<String> test = RedisClientManagement.getInstance().scan(new Key("test"), 1000, "test:*");

            RedisClientManagement.getInstance().scan(new Key("test"), 1000, "test:*", (result) -> {

                for (String rs : result) {

                    // ....            }

                return true;

            });

        }

    }

    分为两种方式

     1、一次性返回scan结果

    2、使用callback方式

    相关文章

      网友评论

          本文标题:redis面试获取缓存键

          本文链接:https://www.haomeiwen.com/subject/vzohxctx.html