网站和微信,网站建设验收确认书免费下载,企业网站策划方案网站建设方案,代做备案网站1.保姆级Linux安装Redis
①把redis.tar.gz下载到linux中#xff0c;并用命令tar -zxvf安装
②安装完成进入目录输入make进行编译#xff0c;编译完成后输入make install 进行安装 ③创建两个文件夹mkdir bin mkdir etc
将redis目录下的redis.conf文件移动到etc文件中…1.保姆级Linux安装Redis
①把redis.tar.gz下载到linux中并用命令tar -zxvf安装
②安装完成进入目录输入make进行编译编译完成后输入make install 进行安装 ③创建两个文件夹mkdir bin mkdir etc
将redis目录下的redis.conf文件移动到etc文件中mv redis.conf etc
将redis目录下src目录中的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server文件移动到 bin文件夹中:mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /root/home/softwear/redis-6.2.1/bin ④进入etc中打开redis.conf文件修改配置(例如输入/daemonize查找按n键查找下一个):
把文件中的daemonize属性改为yes表明需要在后台运行把 redis.conf配置文件中的 bind 127.0.0.1 这一行给注释掉这里的bind指的是只有指定的网段才能远程访问这个redis注释掉后就没有这个限制了。把 redis.conf配置文件中的 protected-mode 设置成no默认是设置成yes的 防止了远程访问编辑 redis.conf配置文件修改Redis默认密码 (默认密码为空)1在配置文件中找到这一行 # requirepass foobared2删除前面的注释符号#并把foobared修改成自己的密码 或者 另起一行 requirepass 自己的密码 ⑤设置Redis开机启动
进入vi /etc/rc.d/rc.local
将bin目录下的/root/home/softwear/redis-6.2.1/bin/redis-server 和etc目录下的/root/home/softwear/redis-6.2.1/etc/redis.conf 添加到文件中 ⑥进入redis下的bin目录 cd ~/home/softwear/redis-6.2.1/bin, 启动redis服务redis-server 启动成功! 注意修改完Redis配置文件后启动时一定要加上配置文件例如redis-server redis.conf ⑦redis-server服务启动之后启动后启动客户端 redis-cli
redis-cli -h(地址) 127.0.0.1 -p(端口号) 6379 -a(密码) ..... 2.Bloom过滤器安装
下载插件https://download.csdn.net/download/RHHcainiao/88652985
也可以自行下载
# 1.解压tar -zxvf v2.2.1.tar.gz
# 2. make一下
cd RedisBloom-2.2.1/
make
2.安装完布隆过滤器后去redis的配置文件中加载 redisbloom.so文件在redis.conf中添加配置 #1.打开Redis的conf配置文件
vim redis/redis.conf
添加如下内容
loadmodule /root/redis-6.2.5/RedisBloom-2.2.5/redisbloom.so
3.验证是否安装且成功配置布隆过滤器先重启redis然后使用布隆过滤器的 bf.add命令进行测试,返回1代表布隆过滤器配置完成
# 1.重启进入redis客户端
redis-server /usr/local/redis/redis.conf
redis-cli -h(地址) 127.0.0.1 -p(端口号) 6379 -a(密码) .....
# 2.测试布隆过滤器命令,如果返回1说明布隆过滤器配置成功!
bf.add k1 test
3. 布隆过滤器的基本使用
# 1.清空redis数据库(测试用慎重)
flushall
# 2.添加
bf.add k1 helloRedis
# 3.判断是否存在
bf.exists k1 helloRedis
# 4.判断一个不存在的key value
bf.exists k2 helloJava
# 5.批量添加
bf.madd k2 a b c d e
# 6.批量判断
bf.mexists k2 a b c d e
3.Bloom简介 Bloom本质上是一种数据结构特点是 高效的插入和查询可用来判断存在或者不存在 直接上代码
4.SpringBoot集成Bloom
1.添加依赖 dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion30.1-jre/version/dependency
2.编写Bloom帮助类
package com.rh.serviceproduct.bloom;import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;
import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Component;import java.nio.charset.Charset;Component
public class BloomFilterService {//Bloom容量100万(根据业务自定义)private static final int EXPECTED_INSERTIONS 1000000;//误差率0.1%private static final double FPP 0.001;//注入过滤器private BloomFilterString bloomFilter;/*** 初始化方法*/PostConstructpublic void init() {//创建一个过滤器容量100万误差率0.1% 字符编码UTF-8bloomFilter BloomFilter.create(Funnels.stringFunnel(Charset.forName(UTF-8)), EXPECTED_INSERTIONS, FPP);}/*** 添加元素* param value*/public void add(String value) {bloomFilter.put(value);}/*** 是否存在元素* param value* return*/public boolean mightContain(String value) {return bloomFilter.mightContain(value);}
}
3.接口示例编写
package com.rh.serviceproduct.controller;import com.rh.model.vo.common.Result;
import com.rh.model.vo.common.ResultCodeEnum;
import com.rh.serviceproduct.bloom.BloomFilterService;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class TestController {//注入Redis客户端Autowiredprivate RedisTemplateString,StringredisTemplate;//注入Bloom帮助类Autowiredprivate BloomFilterService bloomFilterService;RequestMapping(value/test)public Result findAll(){String findValue;//定义一个最终返回值//1.定义keyString redisKeyHello:Bloom!;//2.判断是否存在Bloom过滤器if (!bloomFilterService.mightContain(redisKey)) {//3.如果不存在去查Redisif (!redisTemplate.hasKey(redisKey)){//4.如果redis都不在去查库System.out.println(查询数据库.........);//5.将数据存入redis,同步存入BloomredisTemplate.opsForValue().set(redisKey,value);bloomFilterService.add(redisKey);}}else {//6.key存在Bloom中从Redis获取数据,防止Bloom误判(概率极低),再判断一遍Redis是否存在keyif (!redisTemplate.hasKey(redisKey)){System.out.println(查询数据库.........);redisTemplate.opsForValue().set(redisKey,value);bloomFilterService.add(redisKey);}findValue redisTemplate.opsForValue().get(redisKey);}return Result.build(findValue, ResultCodeEnum.SUCCESS);}}