用redisTemplate 的 Operations存取list集合操作 java
java,用redisTemplate,的,Operations存取list集合操作,博智网带你了解详细信息 。
java redisTemplate 的 Operations存取list集合一 、存取为list类型@RestController@RequestMapping("/test")@Slf4jpublic class TestController {@Autowiredprivate RedisTemplate redisTemplate;@ApiOperation("redis-savelist")@PostMapping("/redis/save/list")public void redisSaveList() {List<Person> list = getPersonList();//清空while (redisTemplate.opsForList().size("oowwoo") > 0){redisTemplate.opsForList().leftPop("oowwoo");}//存储redisTemplate.opsForList().rightPushAll("oowwoo", list);//取出List<Person> oowwoo = redisTemplate.opsForList().range("oowwoo", 0, -1);log.info(">>>>>>>>>>>>>>>list = {}", oowwoo.toString());Iterator<Person> it = oowwoo.iterator();while(it.hasNext()){Person p = it.next();log.info("person = {}", p.toString());}}private List<Person> getPersonList() {Person p1 = new Person();p1.setId(1L);p1.setName("张一");p1.setAge(11);Person p2 = new Person();p2.setId(2L);p2.setName("张二");p2.setAge(22);Person p3 = new Person();p3.setId(3L);p3.setName("张三");p3.setAge(33);List<Person> list = new ArrayList<>();list.add(p1);list.add(p2);list.add(p3);return list;}}
二 、将list转为json对象存取import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;@Autowiredprivate StringRedisTemplate stringRedisTemplate; //存List<Long> businessIdList = eeFreecarriageShopService.selectBusinessIdInPromotion(); stringRedisTemplate.opsForValue().set(RedisConstants.FREECARRIAGE_BUSINESSIDLIST, JSON.toJSON(businessIdList).toString()); //取String businessJsonArray = stringRedisTemplate.opsForValue().get(RedisConstants.FREECARRIAGE_BUSINESSIDLIST);List<Long> businessIdList = JSONObject.parseArray(businessJsonArray, Long.class);
redis在java中的使用,基本存取操作(RedisTemplate)redisREmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库 。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API 。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型 。
RedisTemplatespring 封装了 RedisTemplate 对象来进行对redis的各种操作,它支持所有的 redis 原生的 api 。
StringRedisTemplate与RedisTemplate两者的关系是StringRedisTemplate继承RedisTemplate 。
两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据 。
SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略 。
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的 。
RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的 。
set void set(K key, V value);
使用:redisTemplate.opsForValue().set("name","tom");set void set(K key, V value, long timeout, TimeUnit unit);
结果:redisTemplate.opsForValue().get("name") 输出结果为tom
使用:redisTemplate.opsForValue().set("name","tom",10, TimeUnit.SECONDS);这里只讨论对string数据的使用,附上一个小demo首先需要导入相关的依赖
结果:redisTemplate.opsForValue().get("name")由于设置的是10秒失效,十秒之内查询有结果,十秒之后返回为null
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
序列化,序列化是为了方便数据传输
这里提供两种序列化封装操作:第一种
@Servicepublic class TokenServiceTask {public static final String ONLINE_OPERRATOR = "";/*** redis序列化存储** @param redisTemplate*/@SuppressWarnings({"rawtypes", "unchecked"})@Autowired(required = false)public void setRedisTemplate(RedisTemplate redisTemplate) {RedisSerializer stringSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(stringSerializer);redisTemplate.setValueSerializer(stringSerializer);redisTemplate.setHashKeySerializer(stringSerializer);redisTemplate.setHashValueSerializer(stringSerializer);this.redisTemplate = redisTemplate;}@Resourceprivate RedisTemplate<String, String> redisTemplate;public void setToken(String key, String token) {ValueOperations<String, String> value = https://www.yf-zs.com/redian/redisTemplate.opsForValue();value.set(ONLINE_OPERRATOR + key, token);}public void setTokenWithTime(String key, String token, long number, TimeUnit timeUnit) {ValueOperations
推荐阅读
- 腊猪尾巴怎样做好吃
- 河蚌体内珍珠的形成过程是
- 12w灯泡一小时耗电量
- 10h是什么意思
- 猫屎咖啡是真的猫屎吗
- 1到12级风用那些现象表_示
- 防晒喷雾喷在丝袜上有用吗
- 牛肉是属于发的东西吗
- 辣椒酱的制作方法及配料
- 监控不显示画面怎么办
