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

自己怎么注册一个网站北京建设教育协会官方网站

自己怎么注册一个网站,北京建设教育协会官方网站,番禺网站制作费用,嘉兴企业网络营销推广平台浅谈 Redis 数据类型 #xff08;一#xff09;String 类型 Redis 的 String 类型 是二进制安全的#xff0c;可以用来存储 文本字符串、int 类型数据和 bitmap 位图 等数据。 1. 字符串操作 适用于存储 文本、JSON、序列化数据 等任意二进制安全的内容 命令作用示例SET设…浅谈 Redis 数据类型 一String 类型 Redis 的 String 类型 是二进制安全的可以用来存储 文本字符串、int 类型数据和 bitmap 位图 等数据。 1. 字符串操作 适用于存储 文本、JSON、序列化数据 等任意二进制安全的内容 命令作用示例SET设置键值SET name AliceGET获取值GET name → AliceAPPEND追加内容APPEND name Smith → Alice SmithSTRLEN获取字节长度STRLEN name → 11GETRANGE截取子串GETRANGE name 0 4 → AliceSETRANGE覆盖部分内容SETRANGE name 6 Taylor → Alice TaylorMSET/MGET批量操作MSET k1 v1 k2 v2 二进制安全可存储图片、序列化对象等任意数据 自动编码短字符串用 embstr 编码内存连续长字符串用 raw 编码 SETNX 操作实现分布式锁 SETNX key value当 key 不存在 时设置其值为 value并返回 OK成功若 key 已存在则不做任何操作返回 nil失败 为防止锁持有者崩溃后锁无法释放需设置超时通过 EXPIRE 任务完成后主动删除键以释放锁通过 DEL **【风险1】**若 SETNX 成功但 EXPIRE 未执行如客户端崩溃锁会永久占用 【解决方案】使用 ​​SET 命令的 NX 和 EX 选项​​ 原子性加锁和设置过期时间 SET key value NX EX 10 # 原子操作仅当不存在时设置并过期时间为 10 秒**【风险2】**任务未在过期时间内完成锁被提前释放 **【解决方案】**看门狗机制启动后台线程定期续期 EVAL if redis.call(GET, KEYS[1]) ARGV[1] then return redis.call(EXPIRE, KEYS[1], ARGV[2]) else return 0 end 1 key value 10 # 每 10 秒执行一次该 LUA 脚本以续期 2. 数值操作 当 String 的值是 整数或浮点数 时Redis 提供专用命令进行原子增减 命令作用示例INCR原子 1INCR counter → 1INCRBY原子 NINCRBY counter 5 → 6DECR原子 -1DECR counter → 5DECRBY原子 -NDECRBY counter 3 → 2INCRBYFLOAT原子 浮点数INCRBYFLOAT price 1.5 → 3.5 编码优化数值用 int 编码固定 8 字节浮点数用 raw。原子性无需事务即可避免并发冲突。 3. bitmap 位图操作 Bitmap 是 String 的扩展通过 位bit操作 实现布尔统计可用于布隆过滤器、用户状态统计等场景 命令作用示例SETBIT设置某位为 0/1SETBIT login:2023 100 1用户 100 登录GETBIT获取某位的值GETBIT login:2023 100 → 1BITCOUNT统计 1 的数量BITCOUNT login:2023 → 5050 人登录BITOP位运算AND/OR/XORBITOP AND result login:day1 login:day2BITPOS查找第一个 0/1 位BITPOS login:2023 1 → 100 内存高效1 亿用户登录状态仅需约 12MB高性能位运算复杂度 O(n)适合批量处理 4. 二进制安全与 Encoding 加速机制 Redis 的 String 类型基于简单动态字符串实现数据按字节数组存储不预设编码格式读写时不会做任何转换Redis 为 String 类型设计了多种编码格式encoding根据数据内容动态选择最优编码以节省内存和提高性能。通过 OBJECT ENCODING key 可查看编码类型 编码类型适用场景优化原理int存储 64 位有符号整数如 123直接使用整数存储避免字符串转换。embstr短字符串≤44 字节Redis 7内存连续分配减少碎片CPU 缓存友好。raw长字符串44 字节或二进制数据标准 SDS 动态分配支持大容量数据。 二 List 类型 Redis 的 List 类型 是一个双向链表数据结构支持在头部和尾部高效插入、删除元素因此可以灵活实现 栈Stack、队列Queue、数组Array 和 阻塞队列Blocking Queue 的语义。 栈LPUSH LPOP队列RPUSH LPOP数组LINDEX LSET阻塞队列RPUSH BRPOP 以下是详细用法解析 1. List 作为栈Stack 特点后进先出LIFO通过 LPUSH LPOP 实现 ​​适用场景​​函数调用栈、撤销操作Undo记录 ​​操作命令​​ # 入栈左侧插入 LPUSH stack task1 LPUSH stack task2 # 栈内顺序: [task2, task1]# 出栈左侧弹出 LPOP stack # 返回 task2栈剩余: [task1]# 查看栈顶元素不弹出 LINDEX stack 0 # 返回 task12. List 作为队列Queue 特点先进先出FIFO通过 RPUSH LPOP 实现 ​​适用场景​​任务队列、消息缓冲 ​​操作命令​​ # 入队尾部插入 RPUSH queue msg1 RPUSH queue msg2 # 队列顺序: [msg1, msg2]# 出队头部弹出 LPOP queue # 返回 msg1队列剩余: [msg2]# 查看队列长度 LLEN queue # 返回 13. List 作为数组Array 特点支持按索引访问和修改通过 LINDEX LSET 实现 ​​适用场景​​随机访问列表元素、动态数组 ​​操作命令​​ # 初始化数组 RPUSH array a b c # 数组: [a, b, c]# 按索引读取索引从0开始 LINDEX array 1 # 返回 b# 按索引修改 LSET array 1 B # 数组变为: [a, B, c]# 获取全部元素 LRANGE array 0 -1 # 返回 [a, B, c]4. List 作为阻塞队列Blocking Queue 特点消费者阻塞等待新元素通过 BRPOP/BLPOP 实现 ​​适用场景​​实时消息系统、任务调度避免轮询 ​​操作命令​​ # 生产者入队尾部插入 RPUSH bqueue job1 job2# 消费者阻塞出队从头部获取超时时间5秒 BRPOP bqueue 5 # 1) 如果队列不为空立即返回元素如 job1 # 2) 如果队列为空阻塞 5 秒后返回nil若期间有新元素插入则立即返回三Hash 类型 Redis 的 Hash 类型 是一个 键值对集合适合存储对象。它比 String 类型更节省内存且支持 字段级操作单独读写某个字段而无需序列化整个对象。 1. Hash 的底层结构 ziplist压缩列表当字段数和字段值较小时使用内存连续节省空间hashtable哈希表字段较多或值较大时自动转换查询效率 O(1) 2. 核心操作命令 1设置与获取字段值 命令作用示例HSET设置字段值HSET user:1 name Alice age 30HGET获取字段值HGET user:1 name → AliceHMSET批量设置字段HMSET user:1 name Alice age 30HMGET批量获取字段HMGET user:1 name age → [Alice, 30]HGETALL获取所有字段和值HGETALL user:1 → [name, Alice, age, 30] 示例 HSET product:1001 name iPhone price 999 stock 50 HGET product:1001 price # 返回 999 HGETALL product:1001 # 返回所有字段和值2字段增减与删除 命令作用示例HINCRBY字段值整数增减HINCRBY user:1 age 1HINCRBYFLOAT字段值浮点数增减HINCRBYFLOAT account:1 balance 50.5HDEL删除字段HDEL user:1 ageHEXISTS判断字段是否存在HEXISTS user:1 name → 1存在 示例 HINCRBY product:1001 stock -1 # 库存减1 HDEL product:1001 price # 删除价格字段3查询与统计 命令作用示例HKEYS获取所有字段名HKEYS user:1 → [name, age]HVALS获取所有字段值HVALS user:1 → [Alice, 30]HLEN获取字段数量HLEN user:1 → 2HSTRLEN获取字段值的字节长度HSTRLEN user:1 name → 5Alice占 5 字节 示例 HKEYS product:1001 # 返回 [name, price, stock] HLEN product:1001 # 返回 34原子操作 命令作用示例HSETNX字段不存在时才设置HSETNX user:1 email aliceexample.comHSCAN增量迭代字段大数据量时避免阻塞HSCAN user:1 0 示例 HSETNX user:1 email aliceexample.com # 仅当 email 不存在时设置3. 对象的三种存储策略单 key 存储、多 key 存储、使用 hash 类型 1序列化为字符串单 Key 存储 SET user:1000 {name:Alice,age:30,email:aliceexample.com}2每个字段单独存储多 Key 存储 SET user:1000:name Alice SET user:1000:age 30 SET user:1000:email aliceexample.com3使用 Hash 类型 HSET user:1000 name Alice age 30 email aliceexample.com4三种策略比较 维度序列化为字符串多 Key 存储Hash 类型读写效率整体读写快部分更新慢部分读写快整体查询慢部分和批量读写均快内存占用低单个 Key高每个 Key 有元数据中小 Hash 用 zip list原子性高整个对象原子操作低需事务中单字段操作原子字段级 TTL不支持支持不支持适用字段规模任意少量字段中小规模字段复杂结构支持支持JSON 等序列化方式需额外设计需序列化字段值 四Set 类型 Redis 的 Set 类型 是一个 无序、去重的集合底层基于哈希表实现支持插入、删除元素以及多个集合的交并差集运算同时提供了随机返回指定个数元素的功能。 1. Set 的核心特性 无序性元素没有固定顺序遍历时顺序不确定唯一性自动去重重复插入的元素会被忽略 2. 常用命令 1基本操作 命令作用示例SADD添加元素自动去重SADD tags redis dbSREM删除元素SREM tags dbSMEMBERS获取所有元素SMEMBERS tagsSISMEMBER判断元素是否存在SISMEMBER tags redis → 1存在SCARD获取集合元素数量SCARD tags → 2SRANDMEMBER随机返回元素可指定数量SRANDMEMBER tags 2 示例 SADD users:1000:followers user1 user2 user3 SMEMBERS users:1000:followers # 返回 [user1, user2, user3] SISMEMBER users:1000:followers user1 # 返回 1存在2集合运算 命令作用示例SINTER返回多个集合的交集SINTER set1 set2SUNION返回多个集合的并集SUNION set1 set2SDIFF返回第一个集合与其他集合的差集SDIFF set1 set2SINTERSTORE存储交集到新集合SINTERSTORE result set1 set2SUNIONSTORE存储并集到新集合SUNIONSTORE result set1 set2SDIFFSTORE存储差集到新集合SDIFFSTORE result set1 set2 示例 SADD group1 user1 user2 user3 SADD group2 user2 user3 user4 SINTER group1 group2 # 返回 [user2, user3]共同成员 SDIFF group1 group2 # 返回 [user1]仅在 group1 中的成员3随机返回元素 Redis 的 Set 类型提供了 随机返回元素 的功能适用于 抽奖、随机推荐、随机选取样本 等场景 SRANDMEMBER key countkeySet 的键名count指定返回的元素数量 count 0返回 不重复 的元素最多返回整个 Set 的大小count 0返回元素可能 重复适用于允许重复抽奖的场景 五Sorted Set 类型 Redis 中的 Sorted Set 类型 也是一种集合类型集合中的元素可以按照自定义分值排序底层基于跳表实现。 1. 特点 唯一性成员member不可重复但分数score可重复有序性按 score 排序默认升序相同 score 按字典序排序 2. 核心命令 成员操作命令 命令功能ZADD key score member添加/更新成员支持NX/XX/INCR选项ZREM key member删除指定成员ZINCRBY key increment member增加成员分数ZSCORE key member获取成员分数 查询命令 命令功能ZRANGE key start stop按分数升序返回成员WITHSCORES显示分数ZREVRANGE key start stop按分数降序返回成员ZRANGEBYSCORE key min max返回分数在 [min,max] 区间的成员 排名统计命令 命令功能ZRANK key member获取成员升序排名从 0 开始ZREVRANK key member获取成员降序排名ZCARD key返回成员总数ZCOUNT key min max统计分数范围内的成员数 集合运算命令 计算多个有序集合的并集存储交集存储 ZUNIONSTORE/ZINTERSTORE destkey numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 必选参数 destkey存储结果的键名numkeys参与计算的集合数量后续需对应数量的 keykey参与计算的集合键名至少一个 可选参数 WEIGHTS为每个集合的分值设置权重默认权重为 1AGGREGATE合并重复成员的分值策略SUM 求和、MIN 取最小、MAX 取最大默认 SUM 示例 ZADD scores1 10 Alice 20 Bob ZADD scores2 5 Alice 30 Charlie ZUNIONSTORE result 2 scores1 scores2 WEIGHTS 2 3 SUMAlice 的分值 10 * 2 5 * 3 35 Bob 的分值 20 * 2 40 Charlie 的分值 30 * 3 90 1) Alice 35 2) Bob 40 3) Charlie 903. 底层实现 Sorted Set 是 Redis 中最复杂的数据结构之一。它通过 跳表和哈希表 的混合实现兼顾了高效查询和动态排序的能力。 编码方式数据结构触发条件特点ziplist压缩列表 [member1, score1, member2, score2, ...]元素数量 ≤ zset-max-ziplist-entries默认128且所有元素长度 ≤ zset-max-ziplist-value默认64字节内存紧凑但增删效率低O(n)skiplist dict跳表 哈希表不满足 ziplist 条件时自动转换支持高效查询和范围操作O(log n) 哈希表与跳表的协同 跳表保证有序性哈希表加速单成员查询两者互补 内存与 CPU 的权衡 小数据用 ziplist 节省内存大数据用 skiplist 提升操作效率 1跳表的结构 跳表Skip List是一种基于 多层有序链表 的数据结构通过 概率平衡 实现高效的动态操作平均 O(log n) 时间复杂度 跳表由多层链表组成每层链表都是有序的但高层链表是低层链表的【快速通道】 最底层链表包含所有元素的有序链表 高层链表每层节点数约为下一层的一半形成跳跃路径 2查找原理平均 O(log n)最坏 O(n) 从最高层头节点开始向右遍历 若当前节点的下一个节点值 ≤ 目标值则继续向右 若下一个节点值 目标值则向下移动到下一层 重复上述过程直到最底层找到目标节点或确认不存在 3插入原理平均 O(log n) 查找插入位置记录每一层的前驱节点即插入位置左侧的节点随机生成层高每个新插入节点的层数由 概率决定通常采用 “抛硬币”策略 初始层高新节点至少在第 0 层最底层包含所有节点逐层晋升每次“抛硬币” 若为“正面”概率通常为 50%则层数 1否则停止Redis 优化降低晋升概率p0.25和限制最大层数32平衡性能与内存开销 在每一层从生成的最高层到最底层链表中插入新节点并更新前后节点的指针
http://www.zqtcl.cn/news/959723/

相关文章:

  • 3d网站带后台下载深圳建站公司设计深业集团
  • 上海人才中心网站电脑培训班
  • 桂林网站建设服务电话网页开发基础
  • 企业型网站建设策划网站案例模板
  • 怎么做产品网站wordpress ajax form
  • 智能建站设计开发电子商务网站的主流语言
  • 大型建站公司是干嘛的北京最富裕的三个区
  • 深圳网站建设设计公司苏州营销网站建设公司排名
  • 网站h1标签的应用漯河网站关键词优化
  • 企业做推广哪些网站比较好环球资源网官方网站
  • 没有网站如何做落地页城市门户网站建设
  • 网易梦幻西游手游官方网站下载制作网站谁家做的好
  • 北京网站制作外包如何在易语言上做网站
  • 中国的网站做欧美风广告设计是干什么的
  • 做酱菜网站做网站什么是解析什么是跳转
  • 西安企业网站备案一般得多少天网站建设公司2018
  • 网站建设安全方案许昌正规网站优化公司
  • 厦门 外贸网站一般什么企业需要建站
  • 代理注册公司需要什么条件网络推广优化服务
  • 做淘宝客网站需要备案吗物流企业
  • 珠海正规网站制作系统东莞建站多少钱
  • 做网站框架图哪个在线网站好用中铁三局招聘官网
  • wordpress百度站内搜索wordpress 修改用户名
  • 网络企业网站建设方案做网站大概需要多少费用
  • 网站301是什么意思自动友链网
  • 淘宝客怎么建设自己网站wordpress links插件
  • 深圳设计网站公司网站芜湖网站建设工作室
  • 礼品类网站建设策划方案郑州手机网站制作
  • 江桥做网站wordpress代码高亮插件
  • 合肥网站制作哪家好建设网站培训班