二、SpringBoot2核心功能--03数据访问--04springboot整合NoSQL(Redis)场景

1、Redis简介

Redis官网:https://redis.io/
Redis中文官方网站:http://www.redis.cn/

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

2、Redis自动配置

<!--引入redis场景启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在这里插入图片描述

自动配置:

  • RedisAutoConfiguration 自动配置类。RedisProperties 属性类 --> spring.redis.xxx是对redis的配置
  • 连接工厂是准备好的。LettuceConnectionConfiguration、JedisConnectionConfiguration
  • 自动注入了RedisTemplate<Object, Object> : xxxTemplate;
  • 自动注入了StringRedisTemplate;k:v都是String
  • key:value
  • 底层只要我们使用 StringRedisTemplate、RedisTemplate就可以操作redis

3、springboot项目中使用Redis(使用本地redis)

3.1、引入redis场景启动器依赖

 <!--引入redis场景启动器-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

3.2、springBoot配置文件配置redis信息

# redis配置:只需配置url即可,因为url带有 host, port, and password这些信息
# URL. Overrides host, port, and password. User is ignored. Example:
#	 * redis://user:password@example.com:6379
#    redis://用户名:密码@公网地址:6379
#    如果redis没有账号密码,上边url中将用户名密码去掉即可

#  在这里我使用的是本地redis 
  redis:
    url: redis://127.0.0.1:6379

3.3、首先启动本地redis

启动本地redis服务器
在这里插入图片描述
启动成功
在这里插入图片描述
启动redis客户端管理工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4、编写代码测试springboot集成redis是否成功–使用Lettuce连接工厂操作redis

在这里插入图片描述
查看控制台
在这里插入图片描述
查看redis客户端工具
在这里插入图片描述

3.5、使用jedis连接工厂操纵redis

1、引入依赖:

<!--引入redis场景启动器-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

 <!--导入jedis-->
 <dependency>
     <groupId>redis.clients</groupId>
     <artifactId>jedis</artifactId>
 </dependency>

2、配置文件中配置指定使用jedis连接工厂:
在这里插入图片描述

# 指定使用jedis连接工厂操作redis
spring:
	redis:
	    url: redis://127.0.0.1:6379
	    client-type: jedis
		# jedis.pool.max-active :   设置最大池子大小 
	    jedis:
	      pool:
	        max-active: 8

4、小功能:使用redis实现在系统首页计数

记录用户访问某个请求的次数,用redis存放数据,效果图如下所示
在这里插入图片描述
1、编写一个拦截器实现HandlerInterceptor接口,用于拦截用户的请求url,并将数据存放到redis中
在这里插入图片描述

@Component
public class RedisUrlCountInterceptor implements HandlerInterceptor {
    
    @Autowired
    StringRedisTemplate redisTemplate;
    
    public  boolean preHandle(HttpServletRequest request,
                              HttpServletResponse response,
                              Object handler)
            throws Exception {
        //获取当前访问的请求名
        String uri = request.getRequestURI();

        //默认每次访问当前uri就会加1
        redisTemplate.opsForValue().increment(uri);

        return true;
    }
    
}

2、拦截器注册到容器中(实现WebMvcConfiguration的addInterceptors方法)

/**
 * 拦截器编写规则:
 *              1、编写一个拦截器实现HandlerInterceptor接口
 *              2、拦截器注册到容器中(实现WebMvcConfiguration的addInterceptors方法)
 *              3、指定拦截器规则【如果是拦截所有,静态资源也会拦截】
 */
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {

    /*
     * Filter. Interceptor几乎拥有相同的功能?
     * 1、Filter是Servlet定义的原生组件。好处,脱离Spring应用也能使用本
     * 2、interceptor是Spring定义的接口。
     */
    @Autowired
    RedisUrlCountInterceptor redisUrlCountInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(redisUrlCountInterceptor)
                //添加要拦截的请求。此处意思是拦截所有请求,包括静态资源
                .addPathPatterns("/**")
                //要放行的请求
                .excludePathPatterns("/", "/login", "/css/**", "/fonts/**", "images/**", "/js/**");
	}
	
}

3、由于数据显示在main.html页面的

  • 所以创建控制层类,咋该类中创建访问main页面的方法。
  • 并在该方法很脏获取redis中存放的数据
  • 将获取的数据返回给前端
    在这里插入图片描述
    4、在前端获取数据
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Boot整合GeoMesa Cassandra是为了利用GeoMesa库的强大地理空间处理能力,与Cassandra NoSQL数据库结合,以便在Spring应用中方便地执行地理数据的CRUD操作。GeoMesa是一个高度可扩展的开源框架,它抽象了底层的数据存储,使得开发者能够更专注于业务逻辑。 以下是整合步骤: 1. 添加依赖: 在你的`pom.xml`文件中添加GeoMesa和Spring Data Cassandra的依赖: ```xml <dependency> <groupId>org.locationtech.geomesa</groupId> <artifactId>geomesa-spring-boot-starter-cassandra</artifactId> <version>XX.YY.ZZ</version> <!-- 用最新版本替换 --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-cassandra</artifactId> </dependency> ``` 记得替换版本号为最新的稳定版。 2. 配置GeoMesa Cassandra:在`application.properties`或`application.yml`中配置Cassandra连接信息,包括主机、端口、用户名、密码等。 3. 创建数据源:在Spring Boot应用中,使用Spring Data Cassandra的Repository接口来定义地理空间数据源。例如,假设你有一个`Feature`实体映射到GeoMesa中的一个表,你可以创建一个类似这样的Repository接口: ```java public interface FeatureRepository extends GeoMesaFeatureDao<Feature, UUID> { // CRUD operations List<Feature> findByBbox(BoundingBox bbox); Feature findById(UUID id); void save(Feature feature); void deleteById(UUID id); } ``` 4. 使用Repository:注入`FeatureRepository`并进行CRUD操作: ```java @Autowired private FeatureRepository featureRepository; public void createFeature(Feature feature) { featureRepository.save(feature); } public Feature getFeatureById(UUID id) { return featureRepository.findById(id); } public void updateFeature(Feature updatedFeature) { featureRepository.save(updatedFeature); } public void deleteFeature(UUID id) { featureRepository.deleteById(id); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值