spring boot整合redis

1.項目目錄結構java

2.配置文件web

application.ymlredis

testName: applicationName: testRedis spring: redis: host: 192.168.200.108 port: 6379

redis.propertiesspring

host=192.168.200.108 port=6379 connectionTimeout=5000 soTimeout=5000 database=0

build.gradle緩存

group 'springBootDemo' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'war' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile("junit:junit:$springJunit") compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") compile("org.springframework.boot:spring-boot-starter-redis:$springRedisVersion") compile("org.springframework.data:spring-data-redis:$springDataRedis") }

gradle.propertiesapp

#spring springBootVersion=1.3.5.RELEASE springRedisVersion=1.3.5.RELEASE springDataRedis=1.7.2.RELEASE springJunit=1.3.5.RELEASE

3.代碼maven

 RedisConfig.javaide

package com.test.spring.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * Created by Administrator on 2017/3/1 14:45. */ @Configuration public class RedisConfig { /** * 注入 RedisConnectionFactory */ @Autowired RedisConnectionFactory redisConnectionFactory; /** * 實例化 RedisTemplate 對象 * * @return
     */ @Bean public RedisTemplate<String, Object> functionDomainRedisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); initDomainRedisTemplate(redisTemplate, redisConnectionFactory); return redisTemplate; } /** * 設置數據存入 redis 的序列化方式 * * @param redisTemplate * @param factory */
    private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) { redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); redisTemplate.setConnectionFactory(factory); } /** * 實例化 HashOperations 對象,可使用 Hash 類型操做 * * @param redisTemplate * @return
     */ @Bean public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForHash(); } /** * 實例化 ValueOperations 對象,可使用 String 操做 * * @param redisTemplate * @return
     */ @Bean public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForValue(); } /** * 實例化 ListOperations 對象,可使用 List 操做 * * @param redisTemplate * @return
     */ @Bean public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForList(); } /** * 實例化 SetOperations 對象,可使用 Set 操做 * * @param redisTemplate * @return
     */ @Bean public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForSet(); } /** * 實例化 ZSetOperations 對象,可使用 ZSet 操做 * * @param redisTemplate * @return
     */ @Bean public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForZSet(); } }

RedisModel.javaspring-boot

package com.test.spring.model; import java.io.Serializable; /** * Created by Administrator on 2017/3/1 14:55. */
public class RedisModel implements Serializable { private String redisKey;//redis中的key
    private String name;//姓名
    private String tel;//電話
    private String address;//住址

    public String getRedisKey() { return redisKey; } public void setRedisKey(String redisKey) { this.redisKey = redisKey; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }

IRedisService.javagradle

package com.test.spring.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import javax.annotation.Resource; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; /** * Created by Administrator on 2017/3/1 14:57. */
public abstract class IRedisService<T> { @Autowired protected RedisTemplate<String, Object> redisTemplate; @Resource protected HashOperations<String, String, T> hashOperations; /** * 存入redis中的key * * @return
     */
    protected abstract String getRedisKey(); /** * 添加 * * @param key key * @param doamin 對象 * @param expire 過時時間(單位:秒),傳入 -1 時表示不設置過時時間 */
    public void put(String key, T doamin, long expire) { hashOperations.put(getRedisKey(), key, doamin); if (expire != -1) { redisTemplate.expire(getRedisKey(), expire, TimeUnit.SECONDS); } } /** * 刪除 * * @param key 傳入key的名稱 */
    public void remove(String key) { hashOperations.delete(getRedisKey(), key); } /** * 查詢 * * @param key 查詢的key * @return
     */
    public T get(String key) { return hashOperations.get(getRedisKey(), key); } /** * 獲取當前redis庫下全部對象 * * @return
     */
    public List<T> getAll() { return hashOperations.values(getRedisKey()); } /** * 查詢查詢當前redis庫下全部key * * @return
     */
    public Set<String> getKeys() { return hashOperations.keys(getRedisKey()); } /** * 判斷key是否存在redis中 * * @param key 傳入key的名稱 * @return
     */
    public boolean isKeyExists(String key) { return hashOperations.hasKey(getRedisKey(), key); } /** * 查詢當前key下緩存數量 * * @return
     */
    public long count() { return hashOperations.size(getRedisKey()); } /** * 清空redis */
    public void empty() { Set<String> set = hashOperations.keys(getRedisKey()); set.stream().forEach(key -> hashOperations.delete(getRedisKey(), key)); } }

RedisServiceImpl.java

package com.test.spring.serviceimpl; import com.test.spring.model.RedisModel; import com.test.spring.service.IRedisService; import org.springframework.stereotype.Service; /** * Created by Administrator on 2017/3/1 16:00. */ @Service public class RedisServiceImpl extends IRedisService<RedisModel> { private static final String REDIS_KEY = "TEST_REDIS_KEY"; @Override protected String getRedisKey() { return this.REDIS_KEY; } }

MainApplication.java

package com.test.spring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; /** * Created by Administrator on 2017/2/28 9:40. */ @Configuration @EnableAutoConfiguration @ComponentScan public class MainApplication { public static void main(String[] args) { System.getProperties().put("projectName", "springApp"); SpringApplication.run(MainApplication.class, args); } }

TestController.java

package com.test.spring.controller; import com.test.spring.model.RedisModel; import com.test.spring.serviceimpl.RedisServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by Administrator on 2017/3/1 14:55. */ @Controller public class TestController { @Autowired private RedisServiceImpl service; //添加
    @RequestMapping(value = "/add", method = RequestMethod.GET) @ResponseBody public void test() { System.out.println("start....."); RedisModel m = new RedisModel(); m.setName("張三"); m.setTel("1111"); m.setAddress("深圳1"); m.setRedisKey("zhangsanKey01"); service.put(m.getRedisKey(), m, -1); RedisModel m2 = new RedisModel(); m2.setName("張三2"); m2.setTel("2222"); m2.setAddress("深圳2"); m2.setRedisKey("zhangsanKey02"); service.put(m2.getRedisKey(), m2, -1); RedisModel m3 = new RedisModel(); m3.setName("張三3"); m3.setTel("2222"); m3.setAddress("深圳2"); m3.setRedisKey("zhangsanKey03"); service.put(m3.getRedisKey(), m3, -1); System.out.println("add success end..."); } //查詢全部對象
    @RequestMapping(value = "/getAll", method = RequestMethod.GET) @ResponseBody public Object getAll() { return service.getAll(); } //查詢全部key
    @RequestMapping(value = "/getKeys", method = RequestMethod.GET) @ResponseBody public Object getKeys() { return service.getKeys(); } //根據key查詢
    @RequestMapping(value = "/get", method = RequestMethod.GET) @ResponseBody public Object get() { RedisModel m = new RedisModel(); m.setRedisKey("zhangsanKey02"); return service.get(m.getRedisKey()); } //刪除
    @RequestMapping(value = "/remove", method = RequestMethod.GET) @ResponseBody public void remove() { RedisModel m = new RedisModel(); m.setRedisKey("zhangsanKey01"); service.remove(m.getRedisKey()); } //判斷key是否存在
    @RequestMapping(value = "/isKeyExists", method = RequestMethod.GET) @ResponseBody public void isKeyExists() { RedisModel m = new RedisModel(); m.setRedisKey("zhangsanKey01"); boolean flag = service.isKeyExists(m.getRedisKey()); System.out.println("zhangsanKey01 是否存在: "+flag); } //查詢當前緩存的數量
    @RequestMapping(value = "/count", method = RequestMethod.GET) @ResponseBody public Object count() { return service.count(); } //清空全部key
    @RequestMapping(value = "/empty", method = RequestMethod.GET) @ResponseBody public void empty() { service.empty(); } }

數據存入redis後的截圖

相關文章
相關標籤/搜索