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

做不锈钢门的网站百度指数使用指南

做不锈钢门的网站,百度指数使用指南,保定网站建设方案优化,物流炒货怎么做网站Redis是什么Redis#xff0c;全称是Remote Dictionary Service,翻译过来就是#xff0c;远程字典服务。redis属于nosql非关系型数据库。Nosql常见的数据关系#xff0c;基本上是以key-value键值对形式存在的。Key-value: 就像翻阅中文字典或者单词字典#xff0c;通过指定的… Redis是什么Redis全称是Remote Dictionary Service,翻译过来就是远程字典服务。redis属于nosql非关系型数据库。Nosql常见的数据关系基本上是以key-value键值对形式存在的。Key-value: 就像翻阅中文字典或者单词字典通过指定的需要查询的字或者单词(key),可以查找到字典里面对应的详细内容和介绍(value)Redis的一些特点:支持数据持久化、支持多种数据结构、支持数据备份、原子性操作等。原子性操作不能被中途打断。Redis的由来Redis的作者意大利人 —— Salvatore Sanfilippo现在至少四十几岁了还在写代码。Redis灵感来源Alessia Merz意大利一个舞者女郎。Merz在意大利有愚蠢的含义(俚语)。于是Redis的默认服务端口号6379的来源灵感来自于Mers这个词详情可看九宫格输入法 Redis的安装Mac系统brew install redisLinux系列系统apt-get install redis  或 yum install redis 或apt-get install redis-server 或 yum install redis-server Windows系统下载地址https://github.com/tporadowski/redis/releases Redis启动方式Mac/Linux: 启动服务端redis-server  启动客户端redis-cli   如果需要后台启动需要修改 redis.conf  文件设置daemonize 为 yes然后使用 redis-server /xxx/redis.conf 指定配置文件进行启动。xxx是指定的路径。以下下载的姿势可能不对版本有点低所以后面暂且用windows环境下的进行测试。 Windows启动方式双击redis-server.exe文件即可运行 可以点击cli.exe文件启动客户端。输入ping,返回pong代表服务是通的。通过使用set key value可以用来设置一个键值对。通过get key可以获取到key对应的value值。 通过命令创建redis密码config set requirepass 密码 通过使用 命令auth 密码进行redis权限验证。使用keys * 可以显示所有当前存在的key 使用命令select index可以选择指定的Redis的Index(数据库)。Redis默认有最多16个数据库或者叫Index,默认从0开始。例如上面设置的默认是0库选择1库进行查询就会没有东西。 Redis的数据结构Redis的数据结构体现在key-value的value上。Key默认都是字符串value的基本数据结构包括字符串string、列表(list)、哈希hash、集合(set)、有序集合(zset)字符串数据结构字符串在redis里面是可变的。用一个图来简单说明一下。 字符串存储规则Redis存储字符串期间额外的空间分配规则是当数据小于1MB的时候每次扩容的空间是成倍增长的。大于1MB的时候每次扩容的空间是1MB。上面这段话如果不太理解可以看Redis源码源码内容如下。  并且String单个数据最大的长度为 2^32-1512M关于字符串的其他操作:使用命令exists key可以查看是否存在该key使用命令del key可以直接删除指定的key以及对应的value。 如果已有key使用set key xxx会直接把key原有的值设置为xxx 使用命令: expire key second可以给指定的key设置过期时间。例如我设置了10s过期十秒以后就会被自动销毁了。  使用命令setex  key  second  value可以设置key-value键值对并且可以同时设置过期时间的秒数。  使用命令: ttl key可以查看指定的key的剩余的过期时间。  对于数值型的字符串可以使用命令incr key 和 decr key 进行自增1和自减1使用命令incrby key number 和 decrby key number 进行自增或自减指定的数值。  可以通过批量设置命令mset key value key value…… 进行批量设置。通过mget key key key……进行批量读取。不过mget批量读取的结果集是个列表(因为带有序号)  列表数据结构Redis的列表最大可以存储40亿个元素2^32-1。列表的插入速度很快时间复杂度是O但是当数据量特别庞大的时候使用索引进行查询操作会变得很慢因为通过索引定位查询的时间复杂度为O(n)。设置列表的key和value命令lpush key value value value ……可以设置一个key,带有多个元素的列表。lleft代表的是左边相当于每个元素是从左边被写入的倒序插入。使用命令lpop  key可以取出最左边的元素的值同时会把该值舍弃掉。   rpush是依次从右边插入正序插入rpop是取出最右边的元素的值然后舍弃掉。r: right代表右边  可以使用命令linsert key before|after 指定的value 要插入的value进行插入元素。before 会把要插入的元素插入到指定的value的前面after会把要插入的元素插入到指定的value的后面。  通过使用命令lset key index 新的value可以把列表指定的索引对应的值给替换掉。  可以通过命令lindex key index获取指定的索引的值并且不会被舍弃。操作索引期间需要注意时间复杂度元素多的情况下慎用。  可以使用命令lrange key 起始索引 结束索引获取在索引区间的所有元素。元素包含起始索引和结束索引的值。  列表还可以用来当作消息队列使用因为列表存取的一些方式可以用来先进先出、先进后出等堆栈操作先进先出与消息队列机制雷同。 哈希数据结构哈希数据结构可以当作是字典(key-value)里面嵌套了个字典value数据类型又是一个 key-value的结构。类似Json或者类似俄罗斯套娃例如person:{ “Name”:”wesky”,  “age”:18}使用命令hset  key field value可以设置哈希数据结构的key,以及一个属性和属性对应的值。使用命令hget key field可以获取指定哈希数据的key对应的属性的值。使用命令hmset key field value field value ……可以批量设置哈希数据指定key的多个属性和值。使用命令hmget key field1 field2 ……可以批量获取指定的key下指定的多个属性的值。使用命令hgetall key可以获取指定的哈希数据的key下的所有属性和值的列表。如下图所示。 使用命令hkeys key可以获取哈希数据指定key的所有属性名称的列表使用命令hvals key可以获取哈希数据指定key的所有属性的值的列表使用命令hlen key可以获取到哈希数据里面指定key的属性个数。 集合数据结构集合结构也可以看成是一个没有属性值的哈希数据结构并且属性不能重复且无序的。类似于Person{ “name”, “age”}使用命令sadd key field1 field2……可以设置集合的key和元素集。由于集合是不可重复的所以重复新增的元素会被自动剔除。 使用命令smembers key可以返回指定集合的所有元素使用命令scard key可以查询集合元素的个数使用命令srandmember key (number:可选可以随机返回指定集合的一个或多个元素。不指定个数即返回一个。 集合数据可以进行一些集合运算操作。命令sdiff  key1  key2可以比较集合key1和集合key2的差集差集结果为写在前面的集合元素减去后面集合的元素命令sinter key1 key2可以获取到集合key1和集合key2的交集。 命令sunion key1 key2可以获取集合key1和集合key2的并集。 有序集合有序集合比较常见的一个场景是用来做排行榜。命令zadd  key  score1(分数用于排行的值)  member1(集合的元素)  score2(分数用于排行的值)  member2(集合的元素) ……可以用来新增有序集合。其中分数代表权重值越低排越前。命令zrange key 起始索引 结束索引可以查询指定集合索引区间的所有元素的属性。命令zincrby key 增加权重值 menber可以对有序集合指定的元素进行增加权重对分数进行增加指定的值  命令zcard  key可以获取有序集合的个数命令zcount  key  最小分数  最大分数可以获取到有序集合在指定的分数区间的所有元素命令zcount key member可以获取有序集合里面指定的元素当前的分数命令zrange key  起始索引 结束索引 withscores可以获取到有序索引里面指定的索引区间内所有的元素以及元素对应的分数。 备注以上五种数据结构都属于容器型它们的特点是当没有元素的时候会被自动释放掉。Redis分布式锁Redis的操作是原子性的如果存在多客户端同时操作的情况下会发生一些干扰问题。原子性指的是redis在进行读写期间是不会被打断的会一直进行到底。下面用一个图片进行说明。 如上图所示A和B同时都要操作Redis数据库里面的Key1。假设此刻Key1存储的是银行的存款然后在A的地方消费掉了此刻A触发了扣减余额的操作。这个时候修改redis的值是通过先读取值出来到内存里面然后进行扣减的读取出来的时候还没扣减完成这个时候B比如说是信用卡自动还款扣钱也要扣减Key1的余额也要进行先读取出来然后才进行扣减。由于Redis是原子性操作所以A的步骤不会被打断B也不会被打断。这个时候A扣减完成了例如原本余额是100元扣减了10元A更改完毕以后值变成了90元。此刻B也要扣减例如扣减20元但是读取的是A改完之前的值所以改完以后是80元。以上就产生了冲突于是就有了Redis的分布式锁用来避免这个问题。 通过命令set  key  value  ex  second  nx可以设置一个锁key代表锁的名称value是值second是锁的超时时间。如下图所示我开了两个客户端并且标注了我的操作顺序号。锁如果没有过期或删除其他客户端创建锁会失败但是其他客户端也可以删除锁所以具有一定风险。建议可以对锁设置不同客户端所需要的不同的值用来区分。然后把需要操作的地方放到锁里面操作来避免产生的同时操作产生的问题。例如伪代码123456789101112131415161718If(exists(lock)){  return false; // 存在锁修改失败}Elsebr{  Set lock true ex 5 nx;  Set key1 100;  del lock;  Return true; // 修改成功}Redis位图    位图的最小单位是bit,每个bit的值只能是0和1位图的应用场景一般用于一些签到记录例如打卡等。场景举例: 例如某APP要存储用户的打卡记录如果按照正常的思路来做可能是用户每天是否打卡的记录都单独设置一个key-value键值对来存储这样的话每个用户每天都需要耗费一个键值对空间。而如果是位图就可以很方便地通过位图来进行记录例如如下图 位图不算基础数据结构或者特殊数据结构其本质上还是字符串。由于每个bit代表一个数据所以还可以当作是bit数组来看待。可以通过命令setbit key 偏移量(索引位)  value(0/1,默认是0)进行设置对应位置的位图数据。通过命令: getbit key 偏移量可以获取到对应的位图索引数据。也可以通过 get key 来获取位图对应的字符串信息。 例如hello字符串的ascii码对应的二进制分别是h: 01101000e: 01100101l: 01101100l: 01101100o: 01101111以下设置字符串hello的位图操作如图所示字符串对应二进制数拼接起来的二进制值为1所在的bit索引位offset使用:setbit key offset 1 进行设置1即可。 setbit/gitbit 和 set/get 实际上是可以互相转换的只是一种是操作bit位一种是操作直接的值。同时可以互相交叉操作使用例如setbit存储get读取set 存储getbit读取等等。可以通过命令: bitcount key 起始字符索引 结束字符索引对指定key里面的数据指定的字符索引区间内获取到对应的位图数据是1的个数。如果不指定则会获取到全部字符串对应位图的1的个数。如下图所示结合以上二进制数据可知h字符有3个1o字符有6个1。 以上指令操作可以适用于在类似打卡天数统计上使用可以快速统计出区间内为1的数据个数。通过命令bitops  key  bit值(0/1)  起始字符索引 结束字符索引可以获取到指定的区间内第一次出现指定的bit值(0或1)所在的位图索引。如果不指定区间默认代表字符串全部区间。如下图所示hello里面第一次出现1是在位图的第一个索引位置第一次出现0是在第0个位图索引位字符索引位为1代表第二个字符第一次出现的值为1的位图索引位置为9。注意 字符串的索引0到N0代表第一个字符例如’h’。位图的索引也是0到N0代表位图上面第一个bit位值为0或者1例如h的位图索引位置是0的值是0  (01101000) 可以通过命令bitfield  key get 类型 位图索引来获取指定类型数据的ascii码。例如以下截图中命令bitfield hello get u8 0 其中u8代表类型u开头代表无符号数据8代表获取8个bit位。如果是有符号的数据是以i开头的。最后面的0代表要获取的起始位图下标索引此处是第0个索引。hello五个字符对应的ascii码分别为104,101,108,108,111如果以上命令的类型 u8 换成 u4 则获取到的值是0110对应的值是6以此类推。也可以并列get获取例如bitfield  key  get  type1 offset1  type2 offset2 ……其他玩法大佬们可以自己尝试。我这边有关操作可以参考如下截图所示内容。 通过命令bitfield key set type 位图索引 ascii码可以把对应的ascii码根据类型写入到指定的索引中并且会返回原来索引被替换的ascii码值。例如下图所示操作位图索引从0开始代表第一个字符h所在位置。97代表a的ascii码执行以后返回104(h的ascii码)并且通过get命令可以查看到字符串已经被替换了。 可以使用命令:bitfield  key  incrby  type  索引  自增值对指定类型和索引区间的值进行累加 如下图所示。h通过 u8 类型自增1即h1i注意对于累加的数据不能超出指定类型的最大值例如 u4 最大值是15累加到15以后会自动折返为0。  针对以上会出现折返的情况可以使用溢出报错或者保持最大或最小值的方式来避免折返的情况。使用命令Bitfield  key  overflow  fail  incrby  type  offset  value可以实现溢出的时候会返回nil使用命令Bitfield  key  overflow  sat  incrby  type  offset  value可以实现当要溢出的时候还是会返回当前的最大值或最小值。如下图所示。 HyperLogLogHyperLogLog是一种可以快速去重的数据结构。但是有一定的误差率大概在0.81%左右。应用场景一般是在需要针对一些大数据量的情况下进行去重计算大概的统计值使用例如网站的PV量等等。使用命令:pfadd   key  value1  value2 ……可以添加对应的多个数据集到指定的key里面去。如果添加已经存在的数据会被自动去重。使用命令pfcount key可以统计数据集的个数。使用命令:pfmerge 目标key  源key1   源key2  ……可以对多个不同的key进行数据合并并且数据集重复的会自动排重。使用HyperLogLog的用途是在针对大数据量的情况下在允许一定的容错率的情况下用它可以节约资源并且快速地进行排重。例如使用set来设置数据资源损耗肯定是巨大的但是使用hyperloglog来处理资源损耗是固定的12kb可以处理的数据量大约是2^64个数据。 冷门科普命令是pf开头是为了纪念HyperLogLog的作者——Philippe Flajolet 布隆过滤器布隆过滤器最常见的场景是商品推荐业务。例如购物时候浏览的信息被记录以后可以进行推荐其他同类型的其他商品。推荐的其他商品不会和浏览过的商品重复(去重)但是也存在一定的误差。布隆过滤器源码地址链接https://github.com/RedisBloom/RedisBloom先进行下载下载方式可以按照自己喜欢的方式下载。例如此处我下载到d目录下的wesky/bloom文件夹下。 然后进入到文件夹内使用make命令进行编译。编译成功的话会产生一个 redisbloom.so的文件。如下我也很尴尬没成功就暂且到这里吧。 假如上面配置成功的话启动redis服务的时候可以把.so文件配置到redis.conf配置文件下,例如我上面所在的位置新增的样式如下loadmodule D:/Wesky/Bloom/RedisBloom/redisbloom.so或者使用命令启动的时候使用命令进行指定redis-server --loadmodule D:/Wesky/Bloom/RedisBloom/redisbloom.so由于当前我本机无法编译布隆过滤器源码所以就暂且到这吧请见谅。布隆过滤器下会有一些命令供参考大家可以根据自己情况进行自己尝试当作是留个悬念了。命令bf.add  key  xxxbf.madd  key  数据1   数据2 ……bf.exists key 数据bf.mexists key 数据1 数据2 …………
http://www.zqtcl.cn/news/753015/

相关文章:

  • 网站淘宝推广怎么做网站seo基本流程
  • miit网站备案济南哪里做网站
  • 做网站软件的公司前端优化
  • 哪个网站有做形象墙汉沽网站建设制作
  • 网站alexa排名查询免费发帖的平台有哪些
  • 德国网站后缀濮阳房产网站建设
  • 漕泾网站建设做网站php语言用什么工具
  • 专业营销的网站建设公司哪家好专门做二手书的网站
  • 建新网站开发流程图电子商务网站开发综合实训报告
  • 临汾网站建设销售长沙网站建设1681989
  • 最近国内外重大新闻事件贺贵江seo教程
  • 网站开发源码网站运营建设方案
  • 网站建设公司 跨界鱼科技专业简述网站的制作步骤
  • 手机网站cms网站优化推广哪家好
  • 网站被k换域名qq空间 wordpress
  • 网站模板种类昆明cms建站模板
  • wordpress em企业网站做seo的优势
  • 设计师做私单网站全球最大的电商平台
  • 外贸联系网站wordpress 优惠券 插件
  • 公司网站开发费用兴田德润官方网站深圳百度快照优化
  • 做网站需要备案么行业网站策划
  • 去年做啥网站能致富周口seo推广
  • 主体负责人电话修改 网站备案什么样算网站需要备案
  • 网站建站免费空间外贸网站建设与优化
  • 网站极简设计建立网站基本知识
  • 网站建设管理标准wordpress rss采集
  • 乐清网站建设费用装修房子的app软件哪个好
  • 专业网站搭建运营工业网站素材
  • 建网站要会什么wordpress电影下载站
  • 济南设计网站的公司西安模板网站建设