Java操作Redis
Redis
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis应用场景
主要能够体现 解决数据库的访问压力。
例如:短信验证码时间有效期、session共享解决方案
Redis优势
性能极高
Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型
Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子
Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性
Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Java操作Redis
Redis Jedis
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>
</dependency>
目录结构
主程序
@SpringBootApplication public class StartApplication { public static void main(String[] args) { SpringApplication.run(StartApplication.class,args); } }
Service
@Service public class SpringBootRedis { @Resource private StringRedisTemplate stringRedisTemplate; public void set(String key,Object value){ if(value instanceof String){ stringRedisTemplate.opsForValue().set(key,(String) value,200L, TimeUnit.SECONDS); }else if(value instanceof List){ List<String> list=(List)value; for(String item:list){ stringRedisTemplate.opsForList().leftPush(key,item); } }else if(value instanceof Set){ String [] objects=(String[])((Set) value).toArray(new String[((Set) value).size()]); stringRedisTemplate.opsForSet().add(key,objects); }else if(value instanceof Map){ stringRedisTemplate.opsForHash().putAll(key,(Map<?,?>) value); } } }
Controller
@RestController public class RedisController { @Resource private SpringBootRedis springBootRedis; @RequestMapping("/setString") public void setString(){ System.out.println("梅川酷子"); springBootRedis.set("key01","v01"); } @RequestMapping("/setList") public void setList(){ List<String> list=new ArrayList<>(); list.add("v1"); list.add("v2"); list.add("v3"); springBootRedis.set("setlist",list); } @RequestMapping("/setSet") public void setSet(){ Set<String> set=new HashSet<>(); set.add("北京"); set.add("上海"); springBootRedis.set("set",set); } @RequestMapping("/setMap") public void setMap(){ Map map=new HashMap(); map.put("name","北京"); map.put("age","111"); springBootRedis.set("setMap",map); } }
启动