时间:2021-05-19
连接到 Redis
Redis 连接工厂会生成到 Redis 数据库服务器的连接。Spring Data Redis 为四种 Redis 客户端实现提供了连接工厂:
具体选择哪一个取决于你。我建议你自行测试并建立基准,进而确定哪一种 Redis 客户端和连接工厂最适合你的需求。从 Spring Data Redis 的角度来看,这些连接工厂在适用性上都是相同的。
在做出决策之后,我们就可以将连接工厂配置为 Spring 中的 bean。例如,如下展示了如何配置 JedisConnectionFactory bean:
假如你配置redis服务器需要用户认证、运行在其他的主机或端口上:
@Bean public RedisConnectionFactory redisCF() { JedisConnectionFactory cf = new JedisConnectionFactory(); cf.setHostName("redis-server"); cf.setPort(7379); cf.setPassword("foobared"); return cf; }Spring Data Redis 以模板的形式提供了较高等级的数据访问方案。实际上,Spring Data Redis 提供了两个模板:
RedisTemplate 可以极大地简化 Redis 数据访问,能够让我们持久化各种类型的 key 和 value,并不局限于字节数组。在认识到 key 和 value 通常是 String 类型之后,StringRedisTemplate 扩展了 RedisTemplate,只关注 String 类型。
可以按照如下方式来构建StringRedisTemplate:
ApplicationContext ctx = new AnnotationConfigApplicationContext(RedisConfig.class);RedisConnectionFactory cf = (RedisConnectionFactory) ctx.getBean("redisCF"); RedisTemplate redis = new StringRedisTemplate(); redis.setConnectionFactory(cf);也可以按照如下方式构建RedisTemplate:
//我这里创建了一个Product的java对象RedisTemplate<String, Product> redis = new RedisTemplate<String, Product>();redis.setConnectionFactory(cf);尽管这并非必须的,但是如果你经常使用 RedisTemplate 或 StringRedisTemplate 的话,你可以考虑将其配置为 bean,然后注入到需要的地方。如下就是一个声明 RedisTemplate 的简单 @Bean 方法:
@Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory cf) { return new StringRedisTemplate(cf); }有了 RedisTemplate(或 StringRedisTemplate)之后,我们就可以开始保存、获取以及删除 key-value 条目了。
使用简单的值
使用 List 类型的值
例如,我们可以在一个 List 类型的条目尾部添加一个值:
redis.opsForList().rightPush("cart", product);而 leftPush() 则会在列表的头部添加一个值:
redis.opsForList().leftPush("cart", product);可以通过 leftPop() 或 rightPop() 方法从列表中弹出一个元素:
Product first = redis.opsForList().leftPop("cart");Product last = redis.opsForList().rightPop("cart");除了从列表中获取值以外,这两个方法还有一个副作用就是从列表中移除所弹出的元素。如果你只是想获取值的话(甚至可能要在列表的中间获取),那么可以使用 range() 方法:
range() 方法不会从列表中移除任何元素,但是它会根据指定的 key 和索引范围,获取范围内的一个或多个值。前面的样例中,会获取 11 个元素,从索引为 2 的元素到索引为 12 的元素(不包含)。如果范围超出了列表的边界,那么只会返回索引在范围内的元素。如果该索引范围内没有元素的话,将会返回一个空的列表。
在 Set 上执行操作
添加一个元素:
redis.opsForSet().add("cart", product);绑定到某个 key 上
我们只在一个地方使用了条目的 key,也就是调用 boundListOps() 的时候。对返回的 BoundListOperations 执行的所有操作都会应用到这个 key 上。
使用 key 和 value 的序列化器
当某个条目保存到 Redis key-value 存储的时候,key 和 value 都会使用 Redis 的序列化器(serializer)进行序列化。Spring Data Redis 提供了多个这样的序列化器,包括:
这些序列化器都实现了 RedisSerializer 接口,如果其中没有符合需求的序列化器,那么你还可以自行创建。
例如,假设当使用 RedisTemplate 的时候,我们希望将 Product 类型的 value 序列化为 JSON,而 key 是 String 类型。RedisTemplate 的 setKeySerializer() 和 setValueSerializer() 方法就需要如下所示:
@Beanpublic RedisTemplate<String, Product> redisTemplate(RedisConnectionFactory cf) { RedisTemplate<String, Product> redis = new RedisTemplate<String, Product>(); redis.setConnectionFactory(cf); redis.setKeySerializer(new StringRedisSerializer()); redis.setValueSerializer(new Jackson2JsonRedisSerializer<Product>(Product.class)); return redis;}到此这篇关于spring使用redis操作key-value的示例代码的文章就介绍到这了,更多相关spring redis操作key-value 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Spring-Data-Redis项目(简称SDR)对Redis的Key-Value数据存储操作提供了更高层次的抽象,类似于SpringFramework对JD
入队操作复制代码代码如下:出队操作复制代码代码如下:如何使用Redis做队列操作Reids是一个比较高级的开源key-value存储系统,采用ANSIC实现。其
redis简介Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库Redis与其他key-value缓存产品有以下三个特点:Red
本章节我们将为大家介绍Python如何操作redis,redis是一个Key-Value数据库,Value支持string(字符串),list(列表),set(
一、RedisCache使用演示Redis是一个key-value存储系统,在web应用上被广泛应用,这里就不对其过多描述了。本章节示例是在SpringBoot