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

护肤品网站建设需求分析做外贸生意最好的网站

护肤品网站建设需求分析,做外贸生意最好的网站,建e网室内设计网别墅,餐厅网站开发背景目录 一.Redis的命令 二.数据类型 三.Redis的key的过期策略如何实现#xff1f; 四.Redis为什么是单线程的 五.String有关的命令 Redis的学习专栏#xff1a;http://t.csdnimg.cn/a8cvV 一.Redis的命令 两个基本命令 在Redis当中#xff0c;有两个基本命令#xff1…目录 一.Redis的命令 二.数据类型 三.Redis的key的过期策略如何实现 四.Redis为什么是单线程的 五.String有关的命令 Redis的学习专栏http://t.csdnimg.cn/a8cvV 一.Redis的命令 两个基本命令  在Redis当中有两个基本命令get和set顾名思义获取和设置键值对。 SET命令         SET  key   value GET命令         GET   key 注如果key不存在则返回一个nil  这个表示空值如果返回的是二进制启动Redis时使用 redis  -cil  --raw  如此会自动转化 全局命令 1.KEYS查询当前服务器上匹配的key类似MySQL的模糊查找通过通配符来查找符合条件的key。老规矩匹配任意一个字符*匹配0个字符或者多个字符[ abcde ]表示只能匹配abcde[^ a] 表示只有a不能匹配其他都可以;[a-d]表示匹配a到d之间的字符。 注这种时间复杂度为O(n)一般禁用key *原因redis是一个单线程服务器执行时间太长会导致Redis服务器阻塞。 keys he[abdo]ll0 通用命令 exists命令判断key是否存在返回key存在的个数!时间复杂度为O(1) exist key1 key2 //判断是否存在key1和key2 DEL命令删除指定的key可一次删除一个或者多个时间复杂度为O(1),返回删除的个数 del hello hiEXPIRE命令设置key的过期时间。超出存活时间自动删除。单位为秒级时间复杂度为O1,返回1则是成功0是失败。 expire hello second ttl命令查询当前key的剩余存活时间时间复杂度为O(1)返回剩余时间-1则是没有关联的时间-2key值不存在 ttl helloTYPE命令返回的KEY对应的数据类型Redis所有的key都是String类型但value却有很多类型。 type key1字符串命令 APPEND命令在字符串键值末尾追加值 APPEND key value INCR命令增加存储在键中的整数值 INCR key DECR命令减少存储在键中的整数值 DECR key 哈希操作命令    HSET key field value在哈希表中设置字段的值。HGET key field获取哈希表中指定字段的值。HDEL key field [field ...]删除哈希表中一个或多个字段。HGETALL key获取哈希表中所有字段和值。 列表操作命令 LPUSH key value [value ...]将一个或多个值插入到列表头部。RPUSH key value [value ...]将一个或多个值插入到列表尾部。LPOP key / RPOP key从列表头部或尾部弹出一个值。 集合操作命令 SADD key member [member ...]向集合添加一个或多个成员。SMEMBERS key获取集合中的所有成员。SREM key member [member ...]从集合中移除一个或多个成员。 注这些命令只是 Redis 提供的众多功能之一部分每个命令都有多种选项和用法可以根据具体的需求选择合适的命令来操作 Redis 数据库。 二.数据类型 Redis 支持多种数据类型每种类型都有其特定的用途和适用场景。 字符串类型 根据字符串的长度和内容采用不同的内部编码方式以优化内存使用和操作效率。Redis 中的字符串类型可以使用以下三种内部编码 int当字符串可以被解释为整数时Redis 会使用 int 编码。这种情况下Redis 会将字符串转换为整数并使用整数的形式来存储和操作。这种编码方式在节省内存空间和提高读取速度方面有显著优势特别是对于包含很大整数的情况。 rawraw 编码直接将字符串以字节数组的形式存储没有进行进一步的优化。存储较短或者非整数的字符串时使用保留了字符串原始的字节序列。 embstr当字符串的长度小于等于 39 字节时Redis 会使用 embstr 编码。embstr 编码将字符串的长度和内容紧密地存储在一个 Redis 对象中避免了额外的内存分配和存储开销。这种编码方式适用于长度较小且频繁出现的字符串。 哈希类型 存储哈希类型Hash时也会根据哈希表的大小和内容采用不同的内部编码方式以便于内存使用和操作效率的优化。Redis 中的哈希类型可以使用以下两种内部编码之一 ziplist当哈希表中包含的键值对数量较少且每个键和值的大小都较小时Redis 使用 ziplist 编码。ziplist 是一种紧凑且轻量级的数据结构将所有的键值对紧凑地存储在一块连续的内存区域中。这种编码方式节省了内存空间适合于存储少量的小键值对。 hashtable当哈希表中包含的键值对数量较多或者键和值的大小较大时Redis 使用 hashtable 编码。hashtable 编码使用一个哈希表来存储键值对通过哈希函数将键映射到哈希表的桶中。这种编码方式支持高效的查找、插入和删除操作适用于大型哈希表和复杂的键值对结构。 列表类型 存储列表类型List时也会根据列表的大小和内容采用不同的内部编码方式以优化内存使用和操作效率。Redis 中的列表类型可以使用以下两种内部编码之一 ziplist当列表中包含的元素数量较少且每个元素的大小都较小时Redis 使用 ziplist 编码。ziplist 是一种紧凑且轻量级的数据结构将所有的列表元素紧凑地存储在一块连续的内存区域中。这种编码方式节省了内存空间适合于存储少量的小元素列表。 linkedlist当列表中包含的元素数量较多或者元素的大小较大时Redis 使用 linkedlist 编码。linkedlist 编码使用双向链表来存储列表元素每个节点除了存储元素值外还包含指向前一个节点和后一个节点的指针。这种编码方式支持高效的插入、删除和范围操作适用于大型列表和复杂的元素结构。 注在Redis3.2开始引入了新的实现方式代替以上的内部编码quicklist兼顾了二者之间的优点。 集合类型 存储集合类型Set时同样会根据集合的大小和内容采用不同的内部编码方式以优化内存使用和操作效率。Redis 中的集合类型可以使用以下两种内部编码之一 intset当集合中的所有元素都是整数并且元素的数量较少时Redis 使用 intset 编码。intset 是一种紧凑的数据结构它将整数元素存储在一个有序的整数数组中。这种编码方式非常节省内存适合于存储少量的整数元素集合。 hashtable当集合中包含的元素数量较多或者元素不是整数时Redis 使用 hashtable 编码。hashtable 编码使用哈希表来存储集合元素通过哈希函数将元素映射到哈希表的桶中。这种编码方式支持高效的查找、插入和删除操作适用于大型集合和复杂的元素结构。 有序类型 有序集合Sorted Set简称 zset也根据集合的大小和元素的特性选择不同的内部编码方式以优化内存使用和操作效率。有序集合在 Redis 中可以使用以下两种内部编码之一 ziplist与列表类型类似当有序集合中的成员数量较少且成员的大小较小时Redis 使用 ziplist 编码。ziplist 将所有成员及其分数紧凑地存储在一块连续的内存区域中。这种编码方式节省了内存空间适合存储少量的小型有序集合。 skiplist当有序集合中包含的成员数量较多或者成员的大小较大时Redis 使用 skiplist 编码。skiplist 是一种有序的数据结构跳表通过多层链表实现每层链表按照不同步长跳跃以加快查找操作。这种编码方式支持快速的成员查找、按分数范围获取成员等操作适用于大型有序集合和复杂的成员结构。 扩展资料在Redis当中我们可以查看数据类型的实际编码方式OBJECT encoding key 三.Redis的key的过期策略如何实现 Key有很多如何判断时间是否过期需要被删除呢难道每一次都要遍历key吗效率方面极低。 Redis整体策略 定期删除 Redis 默认采用的是定期删除机制。在这种机制下Redis 每隔一段时间默认是100ms会随机检查一批设置了过期时间的 key并删除其中已经过期的 key。这个过期时间检查是通过 Redis 的 evict 淘汰算法来完成的。定期删除机制的优点在于它可以在 Redis 服务器空闲时比如在阻塞等待客户端命令的时候执行不会影响正常的读写操作。缺点是可能会导致过期的 key 存在一段时间。 惰性删除 当客户端尝试访问某个 key 时Redis 会先检查这个 key 是否过期如果过期了Redis 就会删除它并返回 nil 或者空结果给客户端。这种删除策略称为惰性删除因为它将过期检查和删除操作延迟到客户端访问时执行。惰性删除保证了只有在需要时才进行删除操作避免了定期删除可能导致的性能开销和并发问题。但是它也可能导致过期的 key 在一段时间内仍然存在于内存中。 四.Redis为什么是单线程的 单线程 Redis 是指 Redis 的主要工作模型它通过单个主线程来处理所有的客户端请求和操作。不会发生线程安全问题因为请求是串行执行的。 问为什么Redis使用单线程呢 答  减少竞争和复杂性 在多线程环境下需要考虑线程之间的数据同步、锁竞争等问题这会增加代码的复杂性和开发难度。Redis 的单线程模型避免了多线程并发控制的复杂性简化了代码实现和维护。 避免上下文切换的开销 多线程环境下频繁的线程切换上下文切换会消耗大量的 CPU 时间和资源尤其是在高并发场景下。单线程模型减少了这种开销使得 Redis 能够更有效地利用 CPU 资源来处理请求。 IO 多路复用的高效利用 Redis 使用非阻塞的 IO 多路复用机制如 epoll、kqueue能够在单线程下处理大量的并发连接和请求。这种机制使得 Redis 能够保持低延迟和高吞吐量即使在面对大量并发操作的情况下也能有效处理。 原子性操作的保证 Redis 的大部分操作是原子性的单线程模型能够确保即使在高并发情况下操作依然能够保持数据的一致性和可靠性。操作的原子性对于一个数据存储和缓存系统来说至关重要特别是在需要保证事务性操作的应用场景下。 内存操作的高效性 Redis 是一个内存数据库和缓存服务器对内存的读写效率非常重视。单线程模型可以更有效地利用 CPU 缓存避免了多线程上下文切换频繁带来的性能损耗从而提升了内存操作的效率。 Redis选择单线程模型是为了在保证简单性、高性能和高并发能力之间取得平衡。 问难道单线程就一定那么好吗 答错误Redis在执行当中若有一个操作占用时间长会导致阻塞到其他命令的执行 问既然是单线程那么效率为什么这么高 答通过对比Mysqlredis访问的是内存因此数据更快而且核心功能比MySQL更简单。而且消耗资源少所以不消耗cpu速度很快 还有一个重要的原因IO多路复用epoll事件通知 五.String有关的命令 在Redis当中所有的Key都是字符串直接按照二进制数据方式存储。不存在内部编码存什么取什么 SET命令         SET key  value [ ex key 秒 | PX 毫秒] [ NX | XX ] 其中NX指仅在键不存在的情况下设置键的值。如果键已经存在则 SET 操作将失败不会对键进行任何操作。          XX指仅在键已经存在的情况下设置键的值。如果键不存在则 SET 操作将失败不会对键进行任何操作。 可能存在的改变新的value值会覆盖旧的value值改变原来的数据类型原来的ttl也会失效。 GET命令 他希望他获取到的value值是字符串类型所以其他类型会报错。 LRANGE:获取List的值、SMEMBERS获取的是Set类型的值、ZRANGE获取的是有序类型的值、 HGETALL获取的是Hash类型的值 问如果执行多次的get命令会发生什么 答会涉及到多次的网络传输因此我们可以选择使用MSET命令一次执行多个KEY。同理使用MGET获取多个KEY值。 SET相关的命令  SETNX不存在键值则设置 SETEX:    设置KEY的同时设置过期时间  秒   setex   key1  秒  value Psetex:    设置KEY的同时设置过期时间毫秒 运算方面  incr  : value值1             仅支持64位的数值                      例子Incr  key incrbyvalue值 n                                                           例子incrby  key  数字 decr : value值 - 1                                                               例子 decr  key decrby: value值 - n                                                            例子decrby KEY -8 incrbyfloat  : value  /-小数                                                例子incrbyfloat  key  -0.2/0.2 注时间复杂度全是O(1),key不存在时value值当作0处理. 拼接修改/获取 字符串的部分内容获取字符串长度。 append命令    ----- append key value 如果可以已经存在并且是String类型命令会将value值追加在原有的String后边。如果KEY不存在则效果等同于SET命令。返回值长度字节 getRange命令  ----   getRange  key  start  end GETRANGE 是用于获取指定字符串键的子串的命令,闭区间负数索引表示从字符串末尾开始计算。例如GETRANGE mykey 0 -1 则是从下标0开始截至到最后一个也就是全部字符串。  如果字符串是汉字呢截取返回的是什么就是强制将切割导致无法出现正常的字符 setrange命令  ----  setrange  key  offset value Redis 中用于修改指定字符串键的子串的命令。Redis 将从指定偏移量开始用给定的值替换相应位置的内容。如果偏移量超过了原字符串的长度Redis 会自动扩展字符串用空字节\x00来填充空白部分。 strlen命令 --- STRLEN key 使用 STRLEN 命令时Redis 返回指定键的字符串值的长度。对于空字符串或不存在的键名STRLEN 命令将返回 0。 扩展删除库的所有数据FLUSHALL命令
http://www.hkea.cn/news/14454659/

相关文章:

  • 专业做网站建设wordpress投票插件
  • 如何自己做公司网站网站怎么上线
  • 网站兼职做计划赚小钱遵义做手机网站建设
  • 软件开发和网站开发有何不同u网站建设
  • 中国空间站完成了多少jquery加速wordpress
  • 顺德网站建设jinqiyewordpress和node.js
  • 如何建手机网站做同城特价的网站有哪些
  • 长尾关键词挖掘站长工具the7做的网站
  • 如何设计网站的主菜单哪个网站做律师推广
  • 怎么做一个手机网站学生个人网页内容排版设计作品
  • 做网站有必要要源码吗做游戏网站在哪里找
  • asp网站 打开最贵网站建设
  • 临汾推广型网站建设wordpress创建论坛
  • 石家庄哪里有做网站网络品牌推广就选
  • 响应式外贸营销网站宁波建设集团股份有限公司官网
  • 兰州网站建设方案如何登陆网站空间
  • 中小企业网站优化做网站的编程语言组合
  • 哪个网站有摄影作品oppo软件商店网页版
  • 专业自适应网站建设极速建站设计本电脑
  • 网站ftp的所有权归谁深圳推广系统哪家好
  • 企业网站制作模板wordpress 画图插件
  • 自学建站网人力资源外包
  • 婚纱摄影网站模版整站源码工信部网站怎么查网址
  • 做网站用什么系统较好网站开发 毕业答辩ppt
  • 南京专业做网站的公司哪家好如何在网站源码做授权
  • 中国设计网站排行榜前十名免费下载百度
  • 做网站时搜索的代码是什么手机网站开发步骤
  • 阿里企业网站建设评估为什么不自己做购物网站
  • 济南济南网站建设网站建设WordPress获取文件夹大小
  • 南宁优化网站网络服务网页制作与设计教程