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

淘宝客导购网站怎么建设网站关键词库是怎么做的

淘宝客导购网站怎么建设,网站关键词库是怎么做的,完备的网站建设,行政部网站建设规划文章目录 String简单介绍常见命令应用场景 Hash简单介绍常见命令应用场景 List简单介绍常见命令应用场景 Set简单介绍常见命令应用场景 Sorted Set(Zset)简单介绍常见命令应用场景 Bitmap简单介绍常见命令应用场景 附录 Redis支持多种数据类型#xff0c;比如String、hash、li… 文章目录 String简单介绍常见命令应用场景 Hash简单介绍常见命令应用场景 List简单介绍常见命令应用场景 Set简单介绍常见命令应用场景 Sorted Set(Zset)简单介绍常见命令应用场景 Bitmap简单介绍常见命令应用场景 附录 Redis支持多种数据类型比如String、hash、list、Set、SortedSet、Streams、Bitmap、Hyperloglog、Geo物理位置等等在 官网也给出了说明本博客就挑一些比较常有的数据类型说说本文例子基于Redisson实现 String 简单介绍 在Redis中所有的数据都是key-value的数据结构存储的那么在Redis中这个string类型的value值只能存储String类型的数据其实不然redis中string类型的value值是可以支持多种类型的比如String、Number、Float、Bits等等但是最大还是只能存储512M。Redis中key也是string类型存储的所以最大也只能存储512M 常见命令 set、get命令就不演示了下面给出一些常有命令 批量设置多个key mset tkey1 tvalue tkey2 111批量获取多个key值 mget tkey1 tkey2获取长度 strlen tkey字符串后面追加内容 append tkey tstring获取指定范围的字符 # 取0~3之间的字符返回1tst getrange tkey 0 3key进行递增(整数) # 返回1 incr ikey # 递增指定大小的值返回124 incrby ikey 124key进行递增(浮点数) # 设置初始浮点数值 set fkey 1.2 # 在原来基础上递增2.4返回3.6 incryfloat fkey 2.4加上key过期时间 expire tkey 10分布式锁实现set if not exists可以使用setnx单个命令也可以使用set结合nx命令来实现 # set tkey过期时间10秒nx如果键不存在时设置 set tkey aaa ex 10 nx # setnx命令相当于set和nx命令一起用 setnx tkey aaaEX 设置指定的到期时间(以秒为单位)。 PX : 设置指定的到期时间(以毫秒为单 NX 仅在键不存在时设置键。 XX 只有在键已存在时才设置。 String 更多指令请参考官网文档https://redis.io/commands/?groupstring 应用场景 对于Redis String类型的应用场景也比较多比如很常有的做缓存处理也可以用于分布式锁、分布式ID 分布式锁的实现主要依赖于命令setnx 分布式ID主要是利用incr这个命令 基于Redis实现一个分布式ID生成器 package com.example.redis.common.handlers;import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;import javax.annotation.Resource;/*** pre* Redis分布式ID生成器* /pre** pre* 修改记录* 修改后版本: 修改人 修改日期: 2023/11/07 14:18 修改内容:* /pre*/ Component public class RedisIdentifierGenerator implements IdentifierGenerator {Resourceprivate RedisTemplate redisTemplate;Overridepublic Number nextId(Object entity) {String key entity.getClass().getName();return redisTemplate.opsForValue().increment(key);}} Hash 简单介绍 Hash哈希数据类型也是一种比较常见的数据结构相对于Redis的string类型而言其实就是多了一层key(field)所以说只要string类型适用的场景hash都是支持的 常见命令 hash设置key为hkeyfield为a的值 hset hkey a aaaa获取hkey的field值 hget hkey a设置多个field值 hmset hkey a 1 b 2 c 3 d 4获取多个field值 hmget hkey a b c d获取key所有的field hkeys hkey获取key所有field的值 hvals hkey获取key所有fileld和值 hgetall hkey给key某个字段field添加值 hincrby hkey a 10对于Hash的更多命令请参考https://redis.io/commands/?grouphash 应用场景 对于hash的应用场景其实只要redis string类型适用的hash都是适用的不过hash这种特殊的数据结构还是适用于一些特殊场景的 存储一个对象类的数据这个对象的多个字段就对应hash的field存储一些统计类的数据比如访问量、点击量等等 如图如果要统计博客的pv、uv还有评论数量(evaluation_count)随着博客数量的增加存储到数据库里后面肯定会查询比较慢所以可以使用redis进行缓存 使用Redisson来写一个例子 Resourceprivate RedissonClient redissonClient;Testvoid contextLoads() throws ExecutionException, InterruptedException {RMapObject, Object redissonClientMap redissonClient.getMap(recordMap);MapString,Integer map new HashMap();map.put(pv , 1000);map.put(uv , 1500);map.put(evaluation_count,30)redissonClientMap.putAll(map);System.out.println(redissonClientMap.addAndGet(pv, 2));} List 简单介绍 redis中的数据类型存储有序的字符串列表元素是可以重复列表的最大长度为2^32-1个元素4294967295即每个列表超过40亿个元素 常见命令 左右添加元素 # 左边添加元素 lpush queueList a lpush queueList b c# 右边添加元素 rpush queueList d e 左右弹出第一条 # 左边弹出一个元素 lpop queueList # 右边弹出一个元素 rpop queueList左右弹出一个元素并且设置超时直到无数据弹出或者超时 blpop queueList 10 brpop queueList 10应用场景 微信公众号、微博等消息流列表 RDequeObject recordList redissonClient.getDeque(recordList); recordList.addFirst(1.新闻1); recordList.addFirst(2.新闻2); recordList.addFirst(3.新闻3); IntStream.range(0,3).forEach(a-{System.out.println(recordList.poll()); });消息队列使用redis也可以实现消息队列比如使用rpush/lpop实现简单队列blpop或者是brpop来实现阻塞读取队列补充说明同时stream、pub/sub(订阅发布模式)、sortedSet等等也是可以实现的 不过还是不建议使用Redis来实现消息队列因为我们已经有成熟的MQ框架使用redis实现队列有可能有下面的问题 存在内存可能会有数据丢失不能重复消费消费后不能回应没有ack确认机制 Set 简单介绍 Redis中的Set类型是无序集合最大存储数量为2^32-1大概有40亿左右添加、删除元素的时间复杂度都是O(1) 常见命令 添加一个或者多个元素 sadd skey a b c d e f g h获取所有的元素 smembers skey获取集合元素的个数 scard skey随机获取一个元素 srandmember skey随机弹出一个元素 spop skey弹出指定的元素 # 如果两个元素都有返回2 srem skey a g检查元素是否存在 # 元素存在返回1 sismember skey e获取前一个集合有而后面一个集合没有的元素 sdiff skey skey1获取集合的交集 sinter skey skey1获取集合的并集 sunion skey skey1Set的更多命令请参考https://redis.io/commands/?groupset 应用场景 抽奖程序利用spop跟standmember随机弹出元素 RSetString recordSet redissonClient.getSet(recordSet); ListString members Lists.newArrayList(alice, tim,tom , 风清扬, jack ); recordSet.addAll(members); RFutureSetString threeSet recordSet.removeRandomAsync(3); RFutureSetString twoSet recordSet.removeRandomAsync(2); RFutureSetString oneSet recordSet.removeRandomAsync(1); System.out.println(三等奖threeSet.get()); System.out.println(二等奖twoSet.get()); System.out.println(一等奖oneSet.get());集合交集sinter、并集sunion的场景可以实现共同关注等场景 RSetObject tom redissonClient.getSet(tom); tom.addAll(Lists.newArrayList(令狐冲,james,风清扬)); RSetObject jack redissonClient.getSet(jack); jack.addAll(Lists.newArrayList(令狐冲,tim,jack)); System.out.println(共同关注的人tom.readIntersectionAsync(jack).get());sadd 集合存储实现点赞、签到的业务场景 Sorted Set(Zset) 简单介绍 相对于set来说sorted set是一种有序的set排序是根据每个元素的score排序的score相同时根据key的ASCII码排序 常见命令 批量添加元素 zadd z1 10 a 20 b 30 c 40 d 50 e 60 f 70 g 80 h 90 i根据分数从低到高 zrange z1 0 -1 withscore根据分数从高到低 zrevrange z1 0 -1 withscores根据分数范围取值 zrangebyscore z1 20 30移除元素 zrem z1 i获取有序集合个数 zcard z1给某个元素加分值 zincrby z1 20 a获取范围内的个数 zcount z1 50 60返回指定元素的索引值 # 假如d元素排在第4位索引值就返回3 zrank z1 d获取元素的分数 zscore z1 hSorted Set的更多命令请参考https://redis.io/commands/?groupsorted_set 应用场景 排行榜 RScoredSortedSetString school redissonClient.getScoredSortedSet(school); school.add(60, tom); school.add(60, jack); school.add(60, tim); school.addScore(tom, 20); school.addScore(jack, 10); school.addScore(tim, 30); RFutureCollectionScoredEntryString collectionRFuture school.entryRangeReversedAsync(0, -1); IteratorScoredEntryString iterator collectionRFuture.get().iterator(); System.out.println(成绩从高到低排序); while(iterator.hasNext()) {ScoredEntryString next iterator.next();String value next.getValue();System.out.println(value); } RFutureCollectionScoredEntryString collectionRFuture1 school.entryRangeReversedAsync(0, 2); IteratorScoredEntryString iterator1 collectionRFuture1.get().iterator(); System.out.println(成绩前三名); while (iterator1.hasNext()) {System.out.println(iterator1.next().getValue()); }Bitmap 简单介绍 位图不是实际的数据类型而是String类型中定义的一种面向位的操作所以这个位图的最大存储量也是512M。可以容纳最少2^32不同的位可以在不同的位置设置0或者1 常见命令 设置位的值 # 将位2设置为1 setbit permit 2 1获取位的值 getbit permit 2获取key的为1的个数 # 获取位为1的总数 bitcount permit获取0或者1的第一位 # 获取key permit 位为1的第一个位置 bitpos permit 1获取多个bitmap的位操作比如 、| # 获取bkey和permit这两个的运算并且赋值给hbit bitop AND hbit bkey permit应用场景 实时的数据统计 比如人员的考勤打卡记录例如学生tom每次来上课就将相关的位记录位1 假如当月的第一天、第五天、第十天都来了 setbit tom 1 1 setbit tom 5 1 setbit tom 10 1如何每月考勤统计一下这个用户当月来了几天 bitcount tom 也可以应用于统计一个网站一天有多少用户访问例如用户ID为123、124、125的用户访问了csdn setbit csdn:2023-11-08 123 1 setbit csdn:2023-11-08 124 1 setbit csdn:2023-11-08 125 1 ... # 统计一下当天的访问次数 bitcount csdn:2023-11-08 存储用户权限比如用1来表示有权限0表示没权限使用位图可以节省很大的存储空间 附录 Redis命令查询网站https://redis.io/commands/
http://www.pierceye.com/news/205067/

相关文章:

  • aspnet网站开发模板紫光华宇拼音输入法官方下载
  • 东莞网站设计价格wordpress的配置dns
  • 韶关网站建设公司电子商务网站建设考试重点
  • 网站左侧 导航小红书广告投放平台
  • 资阳住房和城乡建设厅网站重庆建设网站建站
  • 网站制作厂家电话多少女生学网络工程难吗
  • 网站建设要经历哪些步骤?网站建设岗位周计划
  • 贵阳网站制作工具福步外贸论坛网首页
  • 网站大全app下载任务发布平台
  • 专业商城网站建设哪家便宜河南做外贸网站的公司
  • seo博客网站东莞网络推广运营企业
  • 定制网站建设公司哪家好嘉兴网站建设多少时间
  • 快三竞猜网站建设wordpress 整站打包
  • 珠海好的网站制作平台微信音乐音频怎么关闭
  • asp.net 网站计数器响应式设计
  • 2017做那些网站致富小程序商城哪个平台好
  • 织梦制作网站如何上线做网站 当站长
  • 如何知道一个网站是用什么做的树莓派搭建wordpress
  • 怎么制作网站登录电子商务网上购物网站建设规划
  • 大连外贸网站制作做文案公众号策划兼职网站
  • 400网站建设推广通王网站内容管理系统
  • 上海专业网站制作开发wordpress 一级目录下
  • 要查询一个网站在什么公司做的推广怎么查济南集团网站建设报价
  • 手机静态网站建设课程设计报告形象型网站
  • 网站建设接单渠道百度网站内容
  • 企业网站pv是什么手机网站开发价格
  • 北京网站优化团队oppo开放平台
  • 购物商城外贸网站福州营销型网站建设公司
  • 白酒pc网站建设方案网站不符合个人备案性质
  • 做视频网站程序多少钱免费人体做爰网站