QA技能--redis日常使用总结

汇总一下QA日常工作中经常用到的redis命令,以及通过redisson动态切换连接redis集群。

一、redis相关介绍
  • redis是什么
    REmote DIctionary Server(Redis) 是一个开源的key-value存储系统,主要用于数据库、缓存、消息中间件。
  • redis数据类型
    Redis支持五种数据类型:字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)。
二、常用命令总结

工作中使用最多的就是开启客户端、查询key对应的value以及过期时间

开启客户端命令

1、开启普通客户端

# 连接非集群命令,这种方式密码直接暴露在命令行不安全,如果密码包含特殊符号需要进行转义,否则会报错
./redis-cli -h host -p port -a password

2、开启集群客户端

# 连接进群命令,需要加-c参数 表示以集群的方式连接,如果密码包含特殊符号需要进行转义,否则会报错
./redis-cli -h host -p port -a password -c
常用命令

1、获取过期时间

# 在第二步开启的redis客户端里面执行
ttl key
返回结果说明:
-2:表示key不存在
-1:表示key存在但是没有设置过期时间
其它数值:表示key的剩余生存时间,单位是秒

2、获取key对应的value

  • 字符串(String)类型,使用命令:get key
  • 哈希(Hash)类型,使用命令:hget key field(获取存储在哈希表中指定字段的值) 或 hgetall key(获取在哈希表中指定 key 的所有字段和值)
  • 列表(List)类型,使用命令:LRANGE key start stop,说明获取start到stop范围内的元素
  • 集合(Set)类型,使用命令:SMEMBERS key
  • 有序集合(Sorted Set)类型,使用命令:ZRANGE key start stop

3、批量删除特定的key

./redis-cli -h host -p port -a password keys "*test*" | xargs ./redis-cli -h host -p port -a password del
三、Redis从文件中批量插入数据
  • 创建文件
    说明:将需要批量插入的命令保存为文本文件,文件中的空行必须要有,否则会报错
    set key0 value0
    
    set key1 value1
    
  • 转码
    由于redis-cli只支持dos格式的换行符\r\n,所以说建议转码mac、linux、windows上面创建的文件,转码命令
    unix2dos redis.txt
    
  • 执行导入
    导入的指令较多,建议使用–pipe 参数启用pipe协议,不仅能减少返回结果的输出,而且还能更快的执行指令
    cat redis.txt | /redis/src/redis-cli -h 127.0.0.1 -p 6379 -a password --pipe
    
    看到结果中errors为0表示全部成功

    All data transferred. Waiting for the last reply…
    Last reply received from server.
    errors: 0, replies: 2

四、redisson动态切换连接集群

有多套集群环境时需要动态切换,切换主要是方便对不同环境的key值查询,通过提供界面传入key、集群名称以及数据类型三个参数就可以查询结果,下面是redisson工具类实现的全部代码,在此工具类的基础上实现redis读取操作即可。

public class RedissonUtil {

    private static final Logger logger = LoggerFactory.getLogger(RedissonUtil.class);
    private static Config config;

    private RedissonUtil() {
        throw new IllegalStateException("Utility class");
    }

    private static Config getConfig(String src) {
        try {
            // 读取redis集群的配置文件
            config = Config.fromYAML(new File(src));
        } catch (IOException e) {
            logger.error("read config file error", e);
        }
        return config;
    }

    private static RedissonClient createClient(Config config) {
        config.useClusterServers().setLoadBalancer(new RoundRobinLoadBalancer());
        // 设置解码类型,和写入时的编码保持一致就可以
        config.setCodec(new SnappyCodec());
        logger.info("redis connect success");
        return Redisson.create(config);
    }

    public static RedissonClient getClient(String clusterName) {
        config = getConfig("src/main/config/redisson-" + clusterName + ".yaml");
        return createClient(config);
    }

    public static void closeClient(RedissonClient redissonClient) {
        // 请求完成之后关闭链接
        redissonClient.shutdown();
        logger.info("redis already close!!!");
    }
}

redis集群配置的yaml文件格式,文件名格式:redisson-" + clusterName + “.yaml”

---
clusterServersConfig:
  idleConnectionTimeout: 1000
  pingTimeout: 1000
  #  connectTimeout: 10000
  #  timeout: 3000
  #  retryAttempts: 3
  #  retryInterval: 1500
  #  reconnectionTimeout: 3000
  #  failedAttempts: 3
  password: "password"
  #  subscriptionsPerConnection: 5
  #  clientName: null
  #  slaveSubscriptionConnectionMinimumIdleSize: 1
  #  slaveSubscriptionConnectionPoolSize: 50
  #  slaveConnectionMinimumIdleSize设置为1,设置较大的话创建连接数量很多,请求频繁会导致服务器报打开文件数太多的错误,如果是正式服务需要评估
  slaveConnectionMinimumIdleSize: 1
  slaveConnectionPoolSize: 64
  masterConnectionMinimumIdleSize: 1
  masterConnectionPoolSize: 32
  readMode: "SLAVE"
  nodeAddresses:
    - "redis://127.0.0.1:16371"
    - "redis://127.0.0.1:16372"
    - "redis://127.0.0.1:16373"
threads: 5
nettyThreads: 222
transportMode: "NIO"

redis集群参数配置参考:集群配置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值