当前位置: 首页 > news >正文

京东网站哪个公司做的wordpress主题的使用

京东网站哪个公司做的,wordpress主题的使用,展陈公司排名,深圳做网站最好本文已收录于专栏 《中间件合集》 目录 背景介绍概念说明原理说明解决穿透安装使用安装过程Redis为普通安装的配置方式Redis为Docker镜像安装的配置方式 具体使用控制台操作命令说明Spring Boot集成布隆过滤器 总结提升 背景介绍 布隆过滤器可以帮助我们解决Redis缓存雪崩的问题…本文已收录于专栏 《中间件合集》 目录 背景介绍概念说明原理说明解决穿透安装使用安装过程Redis为普通安装的配置方式Redis为Docker镜像安装的配置方式 具体使用控制台操作命令说明Spring Boot集成布隆过滤器 总结提升 背景介绍 布隆过滤器可以帮助我们解决Redis缓存雪崩的问题那什么是布隆过滤器、布隆过滤器又是如何使用如何解决缓存雪崩的问题的让我们带着这一系列的问题去详细了解布隆过滤器。 概念说明 布隆过滤器是一种用于快速判断一个元素是否属于一个集合的数据结构。它通常用于大规模数据集合中可以快速判断一个元素是否可能存在于集合中但不能确定一定存在。布隆过滤器的主要优点是占用内存少、查询速度快并且可以容忍一定的误判率。 原理说明 布隆过滤器由一个位数组和多个哈希函数组成。位数组通常初始化为0哈希函数用于将元素映射到位数组中的多个位置。当一个元素被加入到布隆过滤器中时它会被哈希函数映射到位数组的多个位置然后将这些位置的值设为1。当查询一个元素是否存在于布隆过滤器中时哈希函数会将元素映射到位数组的多个位置然后检查这些位置的值是否都为1如果有一个位置的值为0则可以确定元素一定不存在于集合中如果所有位置的值都为1则元素可能存在于集合中。   布隆过滤器的误判率取决于位数组的大小和哈希函数的数量。通常情况下误判率随着位数组大小的增加而减小但会占用更多的内存。因此使用布隆过滤器时需要根据实际情况权衡误判率和内存占用。 解决穿透 我们还可以在存储和缓存之前加⼀个布隆过滤器做⼀层过滤。布隆过滤器⾥会保存数据是否存在如果判断数据不存在就不会访问存储。 安装使用 安装过程 Redis为普通安装的配置方式 1、下载布隆过滤器这个插件 wget https://github.com/RedisLabsModules/rebloom/archive/v2.2.6.tar.gz2、解压文件 tar -zxvf v2.2.6.tar.gz3、编辑插件 # 到RedisBloom对应目录 cd /usr/local/redis/RedisBloom-2.2.6 # 编译插件 make4、Redis集成RedisBloom插件 # vim查看redis.conf vim /usr/local/redis/config/redis.conf # 在文件后面添加如下配置 loadmodule /usr/local/redis/RedisBloom-2.2.6/redisbloom.so5、配置完之后重启Redis即可。 Redis为Docker镜像安装的配置方式 1、创建文件夹以及配置文件用于挂在redis启动的后容器中的文件方便我们在容器外部操作redis的配置 mkdir data ##创建文件夹 touch redis.conf ## 创建文件2、在我们创建的redis.conf文件中添加一行配置loadmodule /data/RedisBloom-2.2.6/redisbloom.so 3、随后直接使用dokcer run命令进行启动 docker run -p 6379:6379 --name redis -v /root/redis/data:/data -v /root/redis/redis.conf:/etc/redis/redis.conf --restartalways --network host -d redis:5.0.7 redis-server /etc/redis/redis.conf这个命令是用于在 Docker 中运行 Redis 容器并进行一些配置。下面是对每个参数的解释 -p 6379:6379: 将 Docker 容器的端口 6379 映射到主机的端口 6379以便可以从主机访问 Redis 服务。–name redis: 指定容器的名称为 “redis”。-v /root/redis/data:/data: 将主机的 /root/redis/data 目录挂载到容器的 /data 目录用于持久化保存 Redis 数据。-v /root/redis/redis.conf:/etc/redis/redis.conf: 将主机的 /root/redis/redis.conf 配置文件挂载到容器的 /etc/redis/redis.conf使用该配置文件作为 Redis 的配置。–restartalways: 设置容器在退出时自动重新启动。–network host: 使用主机网络模式容器将共享主机的网络栈。-d: 在后台运行容器。redis:5.0.7: 指定使用的 Redis 镜像及其版本号。redis-server /etc/redis/redis.conf: 在容器中执行的命令即启动 Redis 服务器并使用指定的配置文件。 执行上述操作redis容器如果启动没有问题那么我们的布隆过滤器的插件和redis都安装并启动成功了如果没有启动成功可以通过docker logs 查看一下redis的启动过程中出现什么问题。 具体使用 控制台操作命令说明 BF.ADD向布隆过滤器中添加一个元素。 BF.ADD key itemBF.EXISTS检查一个元素是否存在于布隆过滤器中。 BF.EXISTS key item-BF.MADD向布隆过滤器中批量添加多个元素。 BF.MADD key item [item ...]BF.MEXISTS批量检查多个元素是否存在于布隆过滤器中。 BF.MEXISTS key item [item ...]BF.INFO获取布隆过滤器的信息包括容量、误判率等。 BF.INFO keyBF.RESERVE创建一个新的布隆过滤器并指定容量和误判率。 BF.RESERVE key error_rate capacityBF.COUNT统计布隆过滤器中已添加的元素数量。 BF.COUNT key给user过滤器添加一个元素如果我们没有添加创建布隆过滤器系统会给我们创建一个其中布隆过滤器的容量为100判错率为0.01这是布隆过滤器的默认配置我们可以在创建布隆过滤器的时候进行修改。 Spring Boot集成布隆过滤器 1、引入依赖这里使用的redis的过滤器所以用到的依赖直接使用的spring-data-redis这个就可以了。 !--redis的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency 2、布隆过滤器的工具类 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional;import java.util.Collections; import java.util.List; import java.util.stream.Collectors;Component public class RedisBloomUtil {Autowiredprivate RedisTemplate redisTemplate;// 初始化一个布隆过滤器public Boolean tryInitBloomFilter(String key, long expectedInsertions, double falseProbability) {Boolean keyExist redisTemplate.hasKey(key);if(keyExist) {return false;}RedisScriptBoolean script new DefaultRedisScript(bloomInitLua(), Boolean.class);RedisSerializer stringSerializer redisTemplate.getStringSerializer();redisTemplate.execute(script, stringSerializer, stringSerializer, Collections.singletonList(key), falseProbability, expectedInsertions);return true;}// 添加元素public Boolean addInBloomFilter(String key, Object arg) {RedisScriptBoolean script new DefaultRedisScript(addInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), arg);}Transactional// 批量添加元素public Boolean batchAddInBloomFilter(String key, Object... args) {RedisScriptBoolean script new DefaultRedisScript(batchAddInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), args);}// 查看某个元素是否是存在public Boolean existInBloomFilter(String key, Object arg) {RedisScriptBoolean script new DefaultRedisScript(existInBloomLua(), Boolean.class);return (Boolean) redisTemplate.execute(script, Collections.singletonList(key), arg);}// 批量查看元素是否存在public List batchExistInBloomFilter(String key, Object... args) {RedisScriptList script new DefaultRedisScript(batchExistInBloomLua(), List.class);ListLong results (List) redisTemplate.execute(script, Collections.singletonList(key), args);ListBoolean booleanList results.stream().map(res - res 1 ? true : false).collect(Collectors.toList());return booleanList;}private String bloomInitLua() {return redis.call(bf.reserve, KEYS[1], ARGV[1], ARGV[2]);}private String addInBloomLua() {return return redis.call(bf.add, KEYS[1], ARGV[1]);}private String batchAddInBloomLua() {StringBuilder sb new StringBuilder();sb.append(for index, arg in pairs(ARGV)).append(\r\n);sb.append(do).append(\r\n);sb.append(redis.call(bf.add, KEYS[1], arg)).append(\r\n);sb.append(end).append(\r\n);sb.append(return true);return sb.toString();}private String existInBloomLua() {return return redis.call(bf.exists, KEYS[1], ARGV[1]);}private String batchExistInBloomLua() {StringBuilder sb new StringBuilder();sb.append(local results {}).append(\r\n);sb.append(for index, arg in pairs(ARGV)).append(\r\n);sb.append(do).append(\r\n);sb.append(local exist redis.call(bf.exists, KEYS[1], arg)).append(\r\n);sb.append(table.insert(results, exist)).append(\r\n);sb.append(end).append(\r\n);sb.append(return results;);return sb.toString();} } 总结提升 布隆过滤器适用于需要快速判断一个元素是否可能存在于集合中的场景例如网络爬虫中的去重、缓存中的数据判断等。但需要注意的是布隆过滤器无法删除元素也无法准确地判断一个元素是否存在于集合中因此在一些场景下可能会产生误判。 此文章对你有用的话记得留言点赞收藏哦
http://www.pierceye.com/news/371662/

相关文章:

  • 昆明购物网站建设企业网络设计方案预算
  • 浙江省建设工程质监站网站什么是营销型网站建设
  • 做网站需要云数据库吗企业做网页还是网站
  • wordpress手机网站插件wordpress编辑器添加按钮弹出窗口
  • 网站建设验收单格式建筑工具网站
  • 比较简洁大方的网站伊春住房和城乡建设网站
  • 电商网站开发prd免费个人网页模板
  • 西安 网站开发 招聘响应式网站代理
  • 浙江建设干部学校网站免费wordpress搭建
  • 海尔网站建设内容策划wordpress 登录密码
  • 金融公司网站规划方案四川省住建厅特种作业证报名
  • 做网站员培训网站小视频怎么做
  • 做网站是学什么专业的电子商务网络营销方式
  • 东莞电商网站公司goz建站
  • 深圳石岩建网站权威发布李建
  • 大连哪家公司做网站比较好网页搜索的快捷键
  • 怎样建个小公司的网站濮阳网络电视直播
  • 台州低价网站建设阆中做网站
  • 兰州网站运营诊断学校网站报价方案
  • 宿迁做网站大公司现在企业做网站一般用什么框架
  • 企业如何建自己的网站自己网站的登录api怎么做
  • 专业的网站建设企业微信小程序服务器一年多少钱
  • 关于网站建设的句子苏州实力做网站公司有哪些
  • 网页制作与网站建设》在线作业 答案wordpress信息量几百万
  • 代刷网站系统怎么做wordpress数据库连接
  • 邢台网站改版开发开封美食网站建设规划
  • 网站建设佰金手指科杰二五国内网站推广
  • wordpress 多站点 用户天津经济持续恢复
  • 做网站邯郸怎样建立平台
  • 网站中捕获鼠标位置mip wordpress 评论