redis 包之间关系
2021/4/9 19:26:20
本文主要是介绍redis 包之间关系,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一,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>
这篇关于redis 包之间关系的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27阿里云Redis学习入门指南
- 2024-12-27阿里云Redis入门详解:轻松搭建与管理
- 2024-12-27阿里云Redis学习:新手入门指南
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程