RedisTemplate读取包含指定前缀的Key的value

文章围绕IM开发需求展开,在IM开发时需在Redis存入客户端与服务端连接信息,若要向以tcImClient开头的客户端推送消息,需读取其value值获取连接信息。还给出了解决方案,包括引入Maven依赖、yml配置、封装方法及调用方式等。

文章已同步到个人博客: http://www.tianshaojiao.com/?p=2140

一、需求

我在做im开发的时候,往往需要在redis中存入客户端与服务端的连接信息,这些连接信息都是有指定前缀的,如下图所示:
在这里插入图片描述
现在如果想要推送消息到所有以 tcImClient开头的客户端时,就需要读取他们的value值,找到客户端连接信息进行推送。

二、解决方案

引入maven依赖,如下所示:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
 </dependency>

yml中的配置:

spring:
  redis:
    host: redis服务器地址
    port: 端口
    password: 密码
    # 连接超时时间(毫秒)
    timeout: 10000
    jedis:
      pool:
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池中的最小空闲连接
        min-idle: 10
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: 100
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1
        max-total: 20

封装方法:

/**
     * 获取指定前缀的值
     * @param prefix key前缀
     * @return
     */
    public List<String> getPrefixKeyValue(String prefix) {
        List<String> values = null;
        // 获取所有的key
        Set<String> keys = redisTemplate.keys(prefix);
        if (null != keys){
            // 批量获取数据
           values = redisTemplate.opsForValue().multiGet(keys);
        }
        return values;
    }

调用方式:

List<String> friendImInfos = redisImCacheManager.getPrefixKeyValue(" tcImClient*");

注意,后面的 “*”不能少

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值