如何在Spring中配置Redis

redis作为如今比较火的分布式缓存数据库,可以大大减轻高并发时数据库的读写压力,最近初学了redis,写个笔记,以便记忆。
一、配置Redis参数
在spring中,编写properties文件
在这里插入图片描述
其中最重要的就是port端口号,以及hostname的IP地址。配置这些参数之前,需要创建Redis服务器,如果在本地,使用localhost,如果在云服务器,则使用该IP地址。
二、配置redis的XML文件
1、配置redis连接池属性
在这里插入图片描述
在配置前,需要将properties文件引入,使用
**<context:property-placeholder location=“classpath:redis.properties”/>**引入配置文件。
2、创建Redis连接池,并将上边的属性传入
在这里插入图片描述
这里需要创建JedisPoolWriper的工具类

public class JedisPoolWriper {
    /** Redis连接池对象   这里传入了一个Bean对象,设置了JedisPool对象的属性*/
    private JedisPool jedisPool;

//    JedisPoolConfig是Jedis的配置信息对象,初始化Jedis对象需要使用配置信息对象、Ip、以及端口号

    public JedisPoolWriper(final JedisPoolConfig poolConfig, final String host,
                           final int port) {
        try {
            jedisPool = new JedisPool(poolConfig, host, port);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取Redis连接池对象
     * @return
     */
    public JedisPool getJedisPool() {
        return jedisPool;
    }

    /**
     * 注入Redis连接池对象
     * @param jedisPool
     */
    public void setJedisPool(JedisPool jedisPool) {
        this.jedisPool = jedisPool;
    }

}

3、创建Redis工具类,对Redis的操作进行封装
Redis是Kye-Value类型的数据库,其中Value有五大类型,其中最基础的是String,它是以二进制文件格式进行存储,所以最大支持到512M
在这里插入图片描述
RedisUtil类代码

package com.imooc.o2o.cache;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.util.SafeEncoder;

import java.util.Set;

public class JedisUtil {
    /** 操作Key的方法 */
    public Keys KEYS;
    /** 对存储结构为String类型的操作 */
    public Strings STRINGS;


    /** Redis连接池对象 */
    private JedisPool jedisPool;

    /**
     * 获取redis连接池
     *
     * @return
     */
    public JedisPool getJedisPool() {
        return jedisPool;
    }

    /**
     * 设置redis连接池,使用set方法的形式将JedisPool连接池对象传入
     *
     * @return
     */
    public void setJedisPool(JedisPoolWriper jedisPoolWriper) {
        this.jedisPool = jedisPoolWriper.getJedisPool();
    }

    /**
     * 从jedis连接池中获取获取jedis对象
     *
     * @return
     */
    public Jedis getJedis() {
        return jedisPool.getResource();
    }


    public class Keys {
        public Keys(JedisUtil jedisUtil) {

        }

        /**
         * 清空所有的Key
         * @return
         */
        public String flushAdd() {
            Jedis jedis = getJedis();
            String stata = jedis.flushAll();
            jedis.close();
            return stata;
        }

        /**
         * 删除keys对应的记录,可以是多个keys
         * @param keys
         * @return 删除的记录数
         */
        public long del(String... keys){
            Jedis jedis  = getJedis();
            long count = jedis.del(keys);
            jedis.close();
            return count;
        }

        /**
         *
         * @param key
         * @return 判断key是否存在
         */
        public boolean exists(String key){
            Jedis jedis = getJedis();
            boolean exis = jedis.exists(key);
            jedis.close();
            return exis;
        }

        /**
         * 查找所有匹配给定的模式的键
         * @param pattern
         * @return key的表达式,*表示多个,?表示一个
         */
        public Set<String> keys(String pattern){
            Jedis jedis = getJedis();
            Set<String> set = jedis.keys(pattern);
            jedis.close();
            return set;
        }
    }


    public class Strings {
        public Strings(JedisUtil jedisUtil) {

        }

        /**
         * 根据Key获取记录
         * @param key
         * @return
         */
        public String get(String key) {
            Jedis sjedis = getJedis();
            String value = sjedis.get(key);
            sjedis.close();
            return value;
        }

        /**
         * 添加记录,如果记录已经存在将覆盖原有的value
         * SafeEncoder.encode 系统自带的方法,可以将String转化成Byte数组
         * @param key
         * @param value
         * @return
         */
        public String set(String key,String value){
            return set(SafeEncoder.encode(key),SafeEncoder.encode(value));
        }

        /**
         * 添加记录,如果记录已经存在将覆盖原来的value
         * @param key
         * @param value
         * @return
         */
        public String set(byte[] key,byte[] value){
            Jedis jedis = getJedis();
            String status = jedis.set(key,value);
            jedis.close();
            return status;
        }
    }
}

总结,使用Redis分以下几步
配置RedisConfig—>实例化Redis连接池---->编写RedisUtil进行具体的操作。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是在 Ubuntu 上使用 Spring Boot 和 Redis 执行 Geo 相关操作的示例: 1. 安装 Redis 和 Java 在 Ubuntu 上安装 Redis 和 Java,可以使用以下命令: ``` sudo apt-get update sudo apt-get install redis-server sudo apt-get install default-jre ``` 2. 创建 Spring Boot 项目 使用以下命令创建一个 Spring Boot 项目: ``` spring init --dependencies=web,data-redis myproject ``` 这将创建一个名为 `myproject` 的 Spring Boot 项目,并添加 Redis 和 Web 依赖项。 3. 添加 Redis 配置 在 `src/main/resources` 目录下创建名为 `application.properties` 的文件,并添加以下 Redis 配置: ``` spring.redis.host=localhost spring.redis.port=6379 ``` 这将告诉 Spring Boot 使用本地 Redis 数据库。 4. 编写控制器 在 `src/main/java` 目录下创建一个名为 `MyController` 的控制器,并添加以下代码: ```java import org.springframework.data.redis.connection.RedisGeoCommands; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.geo.GeoLocation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { private final RedisTemplate<String, String> redisTemplate; public MyController(RedisTemplate<String, String> redisTemplate) { this.redisTemplate = redisTemplate; } @GetMapping("/addGeo") public void addGeo() { redisTemplate.opsForGeo().add("mylocations", new GeoLocation<>("New York", new RedisGeoCommands.GeoLocation<>(-74.005974, 40.712776))); redisTemplate.opsForGeo().add("mylocations", new GeoLocation<>("Paris", new RedisGeoCommands.GeoLocation<>(2.352222, 48.856614))); } } ``` 控制器的 `addGeo` 方法将使用 RedisTemplate 实例将两个地理位置添加到名为 `mylocations` 的 Redis Geo 集合。 5. 运行应用程序 在终端导航到项目目录并运行以下命令: ``` ./mvnw spring-boot:run ``` 这将启动应用程序并将其绑定到默认端口(8080)。 6. 测试应用程序 使用 curl 或浏览器访问 `http://localhost:8080/addGeo`,将两个地理位置添加到 Redis Geo 集合。 可以使用以下命令在 Redis 命令行查看集合的成员: ``` 127.0.0.1:6379> GEORADIUS mylocations 15 37.618423 55.751244 km ``` 这将返回距离(37.618423,55.751244)坐标 15 公里内的成员列表。 这就是在 Ubuntu 上使用 Spring Boot 和 Redis 执行 Geo 相关操作的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值