ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis 包之间关系

2021-04-09 18:58:26  阅读:168  来源: 互联网

标签:关系 set redis value redisson key 之间 byte


一,redis客户端
1.jedis 2.redisson

二.redis操作方式
1.JedisCluster(客户端:jedis)(依赖:jedis)
2.redisson(客户端:redisson)
3.RedisTemplate (依赖:spring-data-redis)

三,依赖之前关系,见后面
以下包含两种:jedis redisson
依赖顺序为包含关系:上面包含下面依赖

四.序列化,desktop manager展示问题
展示**菱形黑符号,因为存的是二进制,只能展示二进制数据。
展示正常因为:1.存的时候就是String或json 2.单独加了template序列化配置类
1.JedisCluster 查询的是二进制
2.RedisTemplate 查询的是正常json

对比三个不同项目,redis存储方式。

1)JedisCluster序列化(我们自己封装)
  public boolean set(String key, Object value, Integer expiration) throws Exception {
        String result = "";
        long begin = System.currentTimeMillis();
        if (expiration > 0) {
            result = this.jedisCluster.setex(SafeEncoder.encode(key), expiration, this.serialize(value));
        } else {
            result = this.jedisCluster.set(SafeEncoder.encode(key), this.serialize(value));
        }

        long end = System.currentTimeMillis();
        this.logger.info("set key:" + key + ", spends: " + (end - begin) + "ms");
        return "OK".equalsIgnoreCase(result);
    }
protected byte[] serialize(Object o) {
    if (o == null) {
        return new byte[0];
    } else {
        Object var2 = null;

        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream os = new ObjectOutputStream(bos);
            os.writeObject(o);
            os.close();
            bos.close();
            byte[] rv = bos.toByteArray();
            return rv;
        } catch (IOException var5) {
            throw new IllegalArgumentException("Non-serializable object", var5);
        }
    }
}

2)RedisTemplate

redisTemplat.opsForValue().set("template",teacher);

类:AbstractOperations
public void set(K key, V value) {
    final byte[] rawValue = this.rawValue(value);
    this.execute(new AbstractOperations<K, V>.ValueDeserializingRedisCallback(key) {
        protected byte[] inRedis(byte[] rawKey, RedisConnection connection) {
            connection.set(rawKey, rawValue);
            return null;
        }
    }, true);
}

byte[] rawValue(Object value) {
    return this.valueSerializer() == null && value instanceof byte[] ? (byte[])((byte[])value) : this.valueSerializer().serialize(value);
}

最终保存接口:
public interface RedisStringCommands {

    @Nullable
    Boolean set(byte[] var1, byte[] var2);
3)ValueOperation
redisUtils.set(key, JSONObject.toJSONString(x), RedisEnum.DISTINCT_ORDER_NO.expired);

@Autowired
private ValueOperations<String, String> valueOperations;
public void set(String key, Object value, long expire) {
    this.valueOperations.set(key, JsonUtils.toJson(value));
    if (expire != -1L) {
        this.expire(key, expire, TimeUnit.SECONDS);
    }

}

类:DefaultValueOperations
@Override
public void set(K key, V value) {

       byte[] rawValue = rawValue(value);
       execute(new ValueDeserializingRedisCallback(key) {

              @Override
              protected byte[] inRedis(byte[] rawKey, RedisConnection connection) {
                     connection.set(rawKey, rawValue);
                     return null;
              }
       }, true);
}

jar依赖

1.使用JedisCluster
<!--jedis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.4.4</version>
</dependency>

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.4.7</version>
</dependency>

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.4.2</version>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.0-RC1</version>
</dependency>

<!-- redisson -->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.15.3</version>
</dependency>

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-data-21</artifactId>
    <version>3.15.3</version>
</dependency>

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.15.3</version>
</dependency>

 

标签:关系,set,redis,value,redisson,key,之间,byte
来源: https://blog.csdn.net/C18298182575/article/details/115554991

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有