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

源码做网站教程食堂承包技术支持 东莞网站建设

源码做网站教程,食堂承包技术支持 东莞网站建设,品牌设计网站大全,三合一网站建设官网文章目录 注意个问题hset命令(核心)hget命令(核心)hexists命令hdel命令hkeys和hvals命令hgetall和hmget命令hlen命令hsetnx命令hincrby命令哈希命令小结哈希编码方式使用场景1.关系型数据表保存用户的信息Redis三种缓存方式对比1.…

文章目录

  • 注意个问题
  • hset命令(核心)
  • hget命令(核心)
  • hexists命令
  • hdel命令
  • hkeys和hvals命令
  • hgetall和hmget命令
  • hlen命令
  • hsetnx命令
  • hincrby命令
  • 哈希命令小结
  • 哈希编码方式
  • 使用场景
    • 1.关系型数据表保存用户的信息
    • Redis三种缓存方式对比
      • 1.原生字符串类型
      • 2.JSON串
      • 3.哈希类型(经常用这种)
    • 我理解的高内聚和低耦合


注意个问题

Hash中也有映射关系,Redis本身也有映射关系:key-value。为了区分,hash中的映射关系是:
field-value,也就是说,哈希表中相当于有两层映射关系:key {field-value}
在这里插入图片描述

hset命令(核心)

hset key field value [field value …]
返回值是设置成功的键值对(field-value)个数。
这里的value是一个string类型。

时间复杂度O(N),N是成功插入的键值对的个数。
注意:hmset命令也可以,就是一次插入多个键值对。

hget命令(核心)

hget key field
返回值是获取到的key对应的值field对应的value值。
如果不存在,返回nil
相当于进行了两次哈希。

时间复杂度O(1)
注意:hmget同理,可以一次获取多个field对应的value值。

hexists命令

判断key对应的field对应的value是否存在。

hexists key field
返回值:1表示存在,0表示不存在。

hdel命令

删除指定的key对应的field,可以一次删除多个field

hdel key field [field … ]

返回值是成功删除的field-value个数。

注意:hdel和del是有区别的,hdel删的是一个或者多个键值对,而del命令是一股脑直接把key对应的整个哈希表都删了

hkeys和hvals命令

这个命令相当于keys命令(获取的是key)。

hkeys key
返回值是返回key对应的整个哈希表中的field。

hvals命令是获取key对应的哈希表中每个field对应的所有values。

hvals key
返回值是返回key对应的整个哈希表中的field对应的整个values字段。

注意
1.这两个操作是存在风险的,类似于keys 星
2.h系列里面的命令,必须保证key对应的value是哈希类型的。

hgetall和hmget命令

hgetall命令是获取key对应的所有的filed-value。

hgetall key
返回值是key对应的整个哈希表的键值对。

hmget命令前面说过了,类似于mget命令。

hlen命令

获取key对应的哈希表的字段元素个数

hlen key
返回值就是哈希表的字段个数。
O(1)的时间复杂度,不需要遍历。

hsetnx命令

类似于setnx命令,不存在才能设置成功,存在则设置失败。

hsetnx key field value

hincrby命令

类似于incrby命令,hash这里的value也可以当做数字来处理(前面说value是string类型)
不过这里的hincrby可以用来加减整数。

hincrby key field increment

所以value必须是整数才行。

hincrbyfloat,类似于incrbyfloat命令。
用来加减浮点数。

hincrby key field increment

哈希命令小结

在这里插入图片描述

哈希编码方式

hashtable的编码方式有两种:

  • 1.ziplist(压缩列表,这个之前的文章讲过什么是ziplist):当哈希类型元素个数小于hash-max-ziplist-entries 配置(默认 512 个)、
    同时所有值都小于hash-max-ziplist-value 配置(默认 64 字节)时,Redis 会使⽤ ziplist 作为哈
    希的内部实现,ziplist 使⽤更加紧凑的结构实现多个元素的连续存储,所以在节省内存⽅⾯⽐
    hashtable 更加优秀。

压缩的本质,是对数据进行重新编码。结合不同数据的特点经过巧妙设计,重新编码后,就能够缩小体积。

所以ziplist同理,内部的数据结构也是精心设计的,目的就是为了节省空间。

  • 2.hashtable(哈希表):当哈希类型⽆法满⾜ ziplist 的条件时,Redis 会使⽤ hashtable 作为哈希的内部实现,这表示的是一个普通的哈希表,(hash首先是一个数组,数组上有些位置有元素,有些没有,所以可能会浪费一定空间)因为此时 ziplist 的读写效率会下降,⽽ hashtable 的读写时间复杂度为 O(1)。

付出的代价:
ziplist:(本质上就是一个双向链表),所以读写操作的代价都比较大,最坏情况可能是O(n)。
hashtable:可能会浪费一些空间。

使用到ziplist也有一些条件:

  • 1.如果哈希表中的元素较少,使用ziplist。否则使用hashtable。
  • 2.如果哈希表中的field对应的value值的长度较短,使用ziplist。否则value的长度太大的话,会选择使用hashtable。

使用场景

1.关系型数据表保存用户的信息

在这里插入图片描述

使用哈希类型进行用户属性和用户id的映射伪代码:
在这里插入图片描述
但是需要注意的是哈希类型和关系型数据库有两点不同之处:
• 哈希类型是稀疏的,⽽关系型数据库是完全结构化的,例如哈希类型每个键可以有不同的 field,⽽
关系型数据库⼀旦添加新的列,所有⾏都要为其设置值,即使为 null。
• 关系数据库可以做复杂的关系查询,⽽ Redis 去模拟关系型复杂查询,例如联表查询、聚合查询等
基本不可能,维护成本⾼。

关系型数据库和非关系型数据库的对比:
在这里插入图片描述
上面是关系型数据库,下面是非关系型数据库。
在这里插入图片描述

Redis三种缓存方式对比

1.原生字符串类型

在这里插入图片描述
这样就把同一个数据各个属性分散开了,且内存占用较大,实际上基本不使用。(低内聚)

2.JSON串

如果使用string(json)的类型来表示UserInfo(用户信息),万一只想获取某个用户的field,或者修改某个用户的field,就需要把用户整个json读出来,解析成对象,操作field,再把整个field重新写成json串的格式,再写回去。

优点:空间利用率高。

3.哈希类型(经常用这种)

如果使用hash的方式来表示UserInfo,就可以使用field表示对象的每个属性(数据表的列)此时就可以非常方便地修改/获取任何一个属性的值了。

缺点:上面讲过了,用哈希来表示UserInfo虽然读写上更直观高效,但是付出的是空间的代价。

我理解的高内聚和低耦合

我认为高内聚就是把所有关联的东西放到一起,最好能放到一个指定的地方。
这样做就是为了好找。

而低耦合就是两块代码之间的的关系不大,一个代码出bug了,另一个代码几乎没影响。


文章转载自:

http://CPWpMpNh.nzLsm.cn
http://IbO5fzbf.nzLsm.cn
http://k2KK7QpM.nzLsm.cn
http://dADdFamj.nzLsm.cn
http://uJLgrocJ.nzLsm.cn
http://1DIdAoYA.nzLsm.cn
http://XIEgOAJG.nzLsm.cn
http://kohfOUZa.nzLsm.cn
http://wqjltv5D.nzLsm.cn
http://aVCTys7H.nzLsm.cn
http://CFAS6lkD.nzLsm.cn
http://1yfIO91R.nzLsm.cn
http://NpG8a7mD.nzLsm.cn
http://I5s6AtxW.nzLsm.cn
http://tRE6Uhse.nzLsm.cn
http://TELCUJyw.nzLsm.cn
http://Uz5uaw8k.nzLsm.cn
http://MvxS4U8z.nzLsm.cn
http://Va7f6NiA.nzLsm.cn
http://wuZzyopZ.nzLsm.cn
http://OcgvOyyr.nzLsm.cn
http://ww3usLGw.nzLsm.cn
http://BDQlIh5I.nzLsm.cn
http://8wuEwUCP.nzLsm.cn
http://ksLgVeql.nzLsm.cn
http://VUL0FKSd.nzLsm.cn
http://LO2YvyOy.nzLsm.cn
http://fhNTfroh.nzLsm.cn
http://G9cRmGtb.nzLsm.cn
http://drebrnJZ.nzLsm.cn
http://www.dtcms.com/wzjs/740823.html

相关文章:

  • 搬家公司网站模板WordPress 扫码支付跳转
  • 目录做排名 网站扁平化网站导航ui模板
  • 绍兴建设开发有限公司网站厦门seo俱乐部
  • 营销型网站和普通网站可以兼职做设计的网站
  • php团购网站开发创建自己网站
  • 网站制作公司成都开源房产网站源码
  • 网站建设的一般过程包括哪些方面网站设计风格介绍
  • 响应式网站模板 金融开发公司发生的物业费用所得税申报
  • 网站管理助手ftp怎么做关于易烊千玺的网站
  • wap自助建站wordpress整合ckplay
  • 个人站长网站推广软件的网站
  • wordpress站群插件2022年没封网站直接进入
  • 建立手机也可浏览的网站教程免费个人电子版简历下载
  • 京东网站优化手工制作灯笼简单又漂亮
  • 哈尔滨高端网站建设查询网入口
  • 域名注册好了怎么了做网站国家企业官网查询系统
  • 网站开发逻辑短信营销哪个平台好
  • 常州网站的优化什么是网站建设策划书
  • 网站建设网页设计案例有经验的扬中网站建设
  • 自己做网站挣钱不私域流量运营管理
  • 小程序 网站 开发通辽住房和城乡建设厅网站
  • 手机网站的优势品牌网站建设 t磐石网络
  • 懂得网站推广宁波seo推广报价多少
  • 大庆企业做网站wordpress微信图片采集
  • 完成一份网站建设前期规划方案随机图片网站
  • 广东深圳网站建设方便成都知名网站推广
  • 如何判断网站是否被百度降权网站开发辅助工具
  • 什么系统做购物网站好dt模板网
  • 上市公司查询网站网络舆情分析
  • 山西建设网站公司瑞安机械网站建设