千家信息网

Redis在项目中的使用方法有哪些

发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,本篇内容介绍了"Redis在项目中的使用方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!sp
千家信息网最后更新 2025年11月18日Redis在项目中的使用方法有哪些

本篇内容介绍了"Redis在项目中的使用方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

springboot中redis相关配置

1、pom.xml中引入依赖

  redis.clients  jedis  2.9.0

2、springboot的习惯优于配置。也在项目中使用了application.yml文件配置mysql的基本配置项。这里也在application.yml里面配置redis的配置项。

spring:  datasource:        # 驱动配置信息        url: jdbc:mysql://localhost:3306/spring_boot?useUnicode=true&characterEncoding=utf8        username: root        password: root        type: com.alibaba.druid.pool.DruidDataSource        driver-class-name: com.mysql.jdbc.Driver        # 连接池的配置信息        filters: stat        maxActive: 20        initialSize: 1        maxWait: 60000        minIdle: 1        timeBetweenEvictionRunsMillis: 60000        minEvictableIdleTimeMillis: 300000        validationQuery: select 'x'        testWhileIdle: true        testOnBorrow: false        testOnReturn: false        poolPreparedStatements: true        maxOpenPreparedStatements: 20  redis:        host: 127.0.0.1        port: 6379        password: pass1234        pool:          max-active: 100          max-idle: 10          max-wait: 100000        timeout: 0

springboot中redis相关类

  • 项目操作redis是使用的RedisTemplate方式,另外还可以完全使用JedisPool和Jedis来操作redis。整合的内容也是从网上收集整合而来,网上整合的方式和方法非常的多,有使用注解形式的,有使用Jackson2JsonRedisSerializer来序列化和反序列化key value的值等等,很多很多。这里使用的是我认为比较容易理解和掌握的,基于JedisPool配置,使用RedisTemplate来操作redis的方式。

redis单独放在一个包redis里,在包里先创建RedisConfig.java文件。

RedisConfig.java

@Configuration@EnableAutoConfigurationpublic class RedisConfig {    @Bean    @ConfigurationProperties(prefix = "spring.redis.pool")    public JedisPoolConfig getRedisConfig(){        JedisPoolConfig config = new JedisPoolConfig();        return config;    }    @Bean    @ConfigurationProperties(prefix = "spring.redis")    public JedisConnectionFactory getConnectionFactory() {        JedisConnectionFactory factory = new JedisConnectionFactory();        factory.setUsePool(true);        JedisPoolConfig config = getRedisConfig();        factory.setPoolConfig(config);        return factory;    }    @Bean    public RedisTemplate getRedisTemplate() {        JedisConnectionFactory factory = getConnectionFactory();        RedisTemplate template = new StringRedisTemplate(factory);        return template;    }}
  • 在包里创建RedisService接口的实现类RedisServiceImpl,这个类实现了接口的所有方法。

RedisServiceImpl.java

@Service("redisService")public class RedisServiceImpl implements RedisService {    @Resource    private RedisTemplate redisTemplate;    @Override    public boolean set(final String key, final String value) {        boolean result = redisTemplate.execute(new RedisCallback() {            @Override            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {                RedisSerializer serializer = redisTemplate.getStringSerializer();                connection.set(serializer.serialize(key), serializer.serialize(value));                return true;            }        });        return result;    }    @Override    public String get(final String key) {        String result = redisTemplate.execute(new RedisCallback() {            @Override            public String doInRedis(RedisConnection connection) throws DataAccessException {                RedisSerializer serializer = redisTemplate.getStringSerializer();                byte[] value = connection.get(serializer.serialize(key));                return serializer.deserialize(value);            }        });        return result;    }    @Override    public boolean expire(final String key, long expire) {        return redisTemplate.expire(key, expire, TimeUnit.SECONDS);    }    @Override    public boolean remove(final String key) {        boolean result = redisTemplate.execute(new RedisCallback() {            @Override            public Boolean doInRedis(RedisConnection connection) throws DataAccessException {                RedisSerializer serializer = redisTemplate.getStringSerializer();                connection.del(key.getBytes());                return true;            }        });        return result;    }}

在这里execute()方法具体的底层没有去研究,只知道这样能实现对于redis数据的操作。
redis保存的数据会在内存和硬盘上存储,所以需要做序列化;这个里面使用的StringRedisSerializer来做序列化,不过这个方式的泛型指定的是String,只能传String进来。所以项目中采用json字符串做redis的交互。

到此,redis在springboot中的整合已经完毕,下面就来测试使用一下。

5. springboot项目中使用redis

在这里就直接使用springboot项目中自带的单元测试类SpringbootApplicationTests进行测试。

@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringbootApplicationTests {    private JSONObject json = new JSONObject();    @Autowired    private RedisService redisService;    @Test    public void contextLoads() throws Exception {    }    /**     * 插入字符串     */    @Test    public void setString() {        redisService.set("redis_string_test", "springboot redis test");    }    /**     * 获取字符串     */    @Test    public void getString() {        String result = redisService.get("redis_string_test");        System.out.println(result);    }    /**     * 插入对象     */    @Test    public void setObject() {        Person person = new Person("person", "male");        redisService.set("redis_obj_test", json.toJSONString(person));    }    /**     * 获取对象     */    @Test    public void getObject() {        String result = redisService.get("redis_obj_test");        Person person = json.parseObject(result, Person.class);        System.out.println(json.toJSONString(person));    }    /**     * 插入对象List     */    @Test    public void setList() {        Person person1 = new Person("person1", "male");        Person person2 = new Person("person2", "female");        Person person3 = new Person("person3", "male");        List list = new ArrayList<>();        list.add(person1);        list.add(person2);        list.add(person3);        redisService.set("redis_list_test", json.toJSONString(list));    }    /**     * 获取list     */    @Test    public void getList() {        String result = redisService.get("redis_list_test");        List list = json.parseArray(result, String.class);        System.out.println(list);    }    @Test    public void remove() {        redisService.remove("redis_test");    }}class Person {    private String name;    private String sex;    public Person() {    }    public Person(String name, String sex) {        this.name = name;        this.sex = sex;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

在这里先是用@Autowired注解把redisService注入进来,然后由于是使用json字符串进行交互,所以引入fastjson的JSONObject类。然后为了方便,直接在这个测试类里面加了一个Person的内部类。

一共测试了:对于string类型的存取,对于object类型的存取,对于list类型的存取,其实本质都是转成了json字符串。还有就是根据key来执行remove操作。

获取字符串:

获取对象:

获取list:

redis管理客户端数据:

"Redis在项目中的使用方法有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

配置 项目 字符 字符串 方法 测试 对象 序列 方式 整合 内容 数据 类型 存取 使用方法 信息 接口 文件 更多 注解 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浙江雍一互联网科技有限公司 国家网络安全宣传日是什么时候 网络安全视频教程哪个好 数据库ddl 三级网络技术大题解法 测试贯穿整个软件开发周期 河南省对口网络技术试题 软件开发职业生活分析 网络安全就是国家安全英语 北京戴尔服务器维修维保 科技飞速发展叫互联网时代吗 连接服务器已断开 汉狮网络安全海报 imf全球债务数据库 网络安全周的漫画 管理软件开发工程师工作内容 数据库与java的连接实习手册 电脑不能上网显示服务器无反应 土壤退化与障碍数据库 数据库完整性的主要措施 bluehost服务器 数据库学生表中的数据有哪些 软件开发年薪80万 手持仪器软件开发 网络安全靠人民活动感言 2021年网络安全宣传周校园日 网络连接时提示更改服务器 山东互联网养老软件开发 国内搞数据库的创业公司 苹果邮件里的收件服务器怎么设置
0