中华建设网站怎么简单页网站
2026/2/13 22:33:50 网站建设 项目流程
中华建设网站,怎么简单页网站,成都网络设计公司,企业网站seo优化服务商Redis 数据结构全景表格数据结构核心命令使用场景String#xff08;字符串#xff09;SET, GET, INCR, DECR, APPEND, STRLEN, MSET, MGET缓存对象、计数器、分布式锁、Session存储、限速器Hash#xff08;哈希表#xff09;HSET, HGET, HGETALL, HDEL, HINCRBY, HLEN, HMS…Redis 数据结构全景表格数据结构核心命令使用场景String字符串SET,GET,INCR,DECR,APPEND,STRLEN,MSET,MGET缓存对象、计数器、分布式锁、Session存储、限速器Hash哈希表HSET,HGET,HGETALL,HDEL,HINCRBY,HLEN,HMSET,HMGET存储对象属性如用户信息、购物车、配置项、结构化数据存储List列表LPUSH,RPUSH,LPOP,RPOP,LRANGE,LLEN,BLPOP,BRPOP消息队列、最新消息排行、任务队列、关注列表、时间线Set集合SADD,SREM,SMEMBERS,SISMEMBER,SCARD,SINTER,SUNION,SDIFF标签系统、好友关系、抽奖活动、共同关注、去重集合Sorted Set有序集合ZADD,ZREM,ZRANGE,ZREVRANGE,ZRANK,ZSCORE,ZINCRBY,ZCARD排行榜、延时队列、范围查询、带权重的任务调度、热门内容Bitmap位图SETBIT,GETBIT,BITCOUNT,BITOP,BITPOS用户签到、活跃用户统计、布隆过滤器、特征标记、日活统计HyperLogLogPFADD,PFCOUNT,PFMERGE海量数据去重计数UV统计、基数估算、大数据量唯一值统计Geospatial地理空间GEOADD,GEODIST,GEOPOS,GEORADIUS,GEORADIUSBYMEMBER附近的人/店、地理位置存储、距离计算、基于位置的服务LBSStream流XADD,XREAD,XRANGE,XLEN,XGROUP,XREADGROUP,ACK事件溯源、消息队列支持消费者组、日志收集、实时数据处理一、String字符串1.核心命令# 基础操作SET key value[EX seconds][NX|XX]# NX不存在才设置分布式锁XX存在才更新GET key DEL key# 数值操作原子性INCR key# 原子自增计数器INCRBY key100# 增加指定值DECR key SETNX key value# 等价于 SET key value NX# 批量操作MSET key1 val1 key2 val2# 批量设置原子性MGET key1 key2# 批量获取# 高级SETEX key60value# 设置并带过期原子GETSET key newvalue# 设置新值并返回旧值STRRLEN key# 获取字符串长度2.使用场景缓存热点数据SET user:1001 “{name:‘tom’,age:25}” EX 3600分布式锁SET lock:order:1001 “uuid” NX EX 30计数器INCR page:view:home原子无竞态全局唯一 IDINCR global:order:id3.注意点值最大 512MB避免存储大对象BigKey 问题数值范围有符号 64 位整数-2^63 ~ 2^63-1SETNX 非原子SETNX EXPIRE 分两步可能死锁用 SET key value NX EX 30 替代**避免 KEYS **生产环境禁用用 SCAN 0 MATCH user:COUNT 100 替代二、List列表1.核心命令# 左右插入栈/队列LPUSH list:a value1 value2# 从左侧插入栈后进先出RPUSH list:a value3# 从右侧插入队列先进先出# 弹出LPOP list:a# 左侧弹出RPOP list:a# 右侧弹出BLPOP list:a10# 阻塞弹出10秒超时用于消息队列# 范围查询LRANGE list:a0-1# 获取全部元素LRANGE list:a09# 获取前10个注意O(n)大数据量慎用# 长度LLEN list:a# 指定位置操作LINDEX list:a0# 获取索引0元素LSET list:a0newval# 设置索引0值LINSERT list:a BEFORE value2 value1.5# 插入LREM list:a2value# 删除前2个value2.使用场景消息队列LPUSH RPOP生产者左插消费者右弹最新列表LPUSH news:latest “news1” LTRIM news:latest 0 99保留最新100条任务队列BRPOP 阻塞消费消息广播多个消费者订阅同一 List无 ACK 机制消息可能被重复消费3.注意点LRANGE 0 -1 慎用大 List 会阻塞 Redis时间复杂度 O(n)BigKey 问题List 元素超过 5000 个视为 BigKey需拆分内存消耗每个元素独立分配内存小元素用 Hash 替代更省无 ACK消息弹出即删除消费者崩溃会丢消息Stream 可解决三、Set集合1.核心命令# 增删SADD set:a member1 member2 SREM set:a member1# 查询SMEMBERS set:a# 获取所有成员O(n)大 Set 慎用SCARD set:a# 获取成员数量SISMEMBER set:a member1# 判断成员是否存在O(1)# 随机操作SRANDMEMBER set:a3# 随机获取3个成员不删除SPOP set:a# 随机弹出1个成员删除# 集合运算SINTER set:a set:b# 交集共同好友SUNION set:a set:b# 并集SDIFF set:a set:b# 差集a 有但 b 没有2.使用场景标签系统SADD user:1001:tags “vip” “active” “buyer”共同好友SINTER user:1001:friends user:1002:friends抽奖/随机SRANDMEMBER 随机选取去重SADD 自动去重3.注意点SMEMBERS 大 Set 危险10 万成员的 Set 执行 SMEMBERS 会阻塞 1 秒以上用 SSCAN 替代SSCAN set:a 0 MATCH * COUNT 100内存优化整数集合intset编码可节省内存所有成员为整数时自动启用交并集复杂度SINTER/SUNION 时间复杂度 O(N*M)大集合运算在客户端做四、Sorted SetZSet有序集合1.核心命令# 添加score 为 double 类型ZADD zset:a100player1200player2150player3# 范围查询按 score 排序ZRANGE zset:a0-1 WITHSCORES# 升序获取全部ZREVRANGE zset:a09WITHSCORES# 降序获取 Top10# 按 score 范围查询ZRANGEBYSCORE zset:a100200WITHSCORES LIMIT010# 成员操作ZSCORE zset:aplayer1# 获取成员 scoreZINCRBY zset:a50player1# score 增加 50ZCARD zset:a# 成员数量# 排名ZRANK zset:aplayer1# 升序排名从0开始ZREVRANK zset:aplayer1# 降序排名Top1 返回 0# 删除ZREM zset:aplayer1ZREMRANGEBYRANK zset:a02# 删除排名 0-2 的成员ZREMRANGEBYSCORE zset:a0100# 删除 score 0-100 的成员2.使用场景排行榜游戏积分、热销榜延迟队列ZADD delay_queue “task1” 定时扫描范围查询成绩区间、价格区间带权重的队列优先级任务// 延迟队列实现// 生产者ZADD delay_queue1704067200task:email:1001// 2024-01-01 执行// 消费者定时任务while(true){SetStringtasksZRANGEBYSCORE delay_queue0NOW()LIMIT010;for(Stringtask:tasks){// 处理任务processTask(task);ZREM delay_queue task;// 移除}Thread.sleep(100);}3.注意点跳表实现ZSet 底层是跳表 Hash内存占用较高每个元素约 100 字节BigKey 阈值成员数 5000 为 BigKeyZREVRANGE 0 -1 慎用O(n)可能阻塞Score 精度double 类型大范围整数可能丢失精度相同 Score按字典序排序不保证插入顺序五、Hash哈希表1.核心命令# 单字段操作HSET user:1001 nametomage25HGET user:1001 name HDEL user:1001 age# 批量操作HMSET user:1001 nametomage25emailtomexample.comHMGET user:1001 name age# 查询HGETALL user:1001# 获取所有字段O(n)HKEYS user:1001# 获取所有 keyHVALS user:1001# 获取所有 valueHLEN user:1001# 字段数量# 存在判断HEXISTS user:1001 name# 数值操作HINCRBY user:1001 age1# age 原子加 12.使用场景对象存储HSET user:1001 field value比 String 序列化更灵活配置项HSET config:app max_connections 100购物车HSET cart:1001 product:123 2 product:456 1商品ID:数量3.注意点小对象优化Hash 的 ziplist 编码字段 512 且每个值 64 字节可节省内存HGETALL 大 Hash可能导致 Redis 阻塞O(n)用 HSCAN 替代内存占用字段名重复存储每个 Hash 独立小对象适合大对象用 String 压缩更优不支持二级结构Hash 的值只能是 String不能嵌套 List/Set六、Bitmap位图1.核心命令# 设置位SETBIT active:2024010110011# 用户1001 在 2024-01-01 活跃# 获取位GETBIT active:202401011001# 返回 0/1# 统计位数BITCOUNT active:20240101# 统计 1 的个数日活# 位运算BITOP AND result:3days active:20210101 active:20210102 active:20210103# 3日留存用户BITOP OR result:active active:20210101 active:20210102# 两日总活跃2.使用场景日活统计SETBIT BITCOUNT内存占用极低1 亿用户 12.5MB用户签到SETBIT sign:1001:202401 0 10 表示第 1 天权限系统SETBIT permissions:admin 1001 1用户1001有管理员权限去重SETBIT seen:page 1001 1标记用户1001访问过页面3.注意点位数限制2^32 位约 42.9 亿足够大多数场景SETBIT 返回旧值注意返回值是之前的位值0 或 1BITCOUNT 范围可指定字节范围 BITBIT key start end线程安全位操作是原子的无需担心并发**内存Bitmap 是 String 实现最大 512MB存储约 40 亿位七、HyperLogLog基数统计1.核心命令# 添加元素PFADD page:uv:20240101user1user2user3# 统计基数去重后数量PFCOUNT page:uv:20240101# 返回估算值# 合并多个 HLLPFMERGE result:uv page:uv:20240101 page:uv:20240102# 合并两日 UV2.使用场景UV 统计页面独立访客误差率 0.81%去重计数统计搜索关键词去重数日活/月活快速估算 DAU/MAU3.注意点误差率标准误差 0.81%不适合需要精确计数的场景如金融固定内存每个 HLL 占用 固定 12KB与元素数量无关无法获取原始数据只能统计数量无法返回具体元素PFADD 可重复重复添加同一元素不影响计数八、Geospatial地理位置1.核心命令# 添加坐标GEOADD cities116.4039.90Beijing121.4731.23Shanghai# 查询坐标GEOPOS citiesBeijing# 计算距离默认米GEODIST citiesBeijingShanghaikm# 返回公里数# 查询半径内成员GEORADIUS cities116.4039.90100km# 北京100km内的城市GEORADIUSBYMEMBER citiesBeijing100km# 以成员为中心查询# 获取哈希GEOHASH citiesBeijing# 返回52位geohash字符串2.使用场景附近的人查询 5km 内的用户门店搜索查找附近的餐馆、加油站轨迹记录存储用户移动轨迹3.注意点距离单位默认为米支持 km/m/mi/ft坐标精度有效经度 -180~180纬度 -85~85数据类型底层是 ZSet可用 ZSet 命令操作但会破坏地理结构误差地球建模为球体有 0.5% 误差性能GEORADIUS 复杂度 O(Nlog(m))N 是半径内数量m 是总成员数九、Stream消息流Redis 5.01.核心命令# 添加消息XADD stream:orders * user_id1001amount99.00# * 表示自动生成 ID时间戳-序列号# 读取消息XRANGE stream:orders - # 读取所有消息XRANGE stream:orders1704067200000-01704153600000-0# 按时间范围# 阻塞读取消费者XREAD COUNT10BLOCK1000STREAMS stream:orders $# $ 表示只读取新消息阻塞1000ms# 消费者组XGROUP CREATE stream:orders order_group $ MKSTREAM# 创建消费者组# 消费者读取ACK 机制XREADGROUP GROUP order_group consumer1 COUNT1BLOCK1000STREAMS stream:orders# 确认消息ACKXACK stream:orders order_group1704067200000-0# 未 ACK 消息查询XPENDING stream:orders order_group# 消息删除XDEL stream:orders1704067200000-0# 标记删除非真正删除2.使用场景可靠消息队列替代 List支持 ACK 和重试事件溯源存储用户行为事件流流计算实时统计订单金额3.注意点ID 格式毫秒时间戳-序列号如 1704067200000-0保证递增消费者组多个消费者共享消息负载均衡需 ACK 确认消息积压未 ACK 的消息会保留可能导致内存膨胀不支持删除中间消息只能删除两端XRANGE 后惰性删除Stream 不是 Kafka不支持分区副本单机容量有限十、通用注意事项所有数据结构1. BigKey 问题# 识别 BigKeyredis-cli --bigkeys# 阈值String: value10KB List/Set/ZSet/Hash: 元素数5000危害删除、查询操作会阻塞 Redis时间复杂度 O(n)解决拆分、压缩、异步删除UNLINK 命令2. 慢查询CONFIG SET slowlog-log-slower-than10000# 超过 10ms 记录SLOWLOG GET10# 查看慢查询常见慢操作KEYS *、FLUSHALL、LRANGE 0 -1、HGETALL 大 Hash3. 过期策略# 设置过期EXPIRE key60# 60秒后过期SETEX key60value# 原子设置过期PERSIST key# 移除过期# 淘汰策略maxmemory-policynoeviction# 不淘汰返回错误默认allkeys-lru# 所有 key LRU 淘汰volatile-lru# 仅过期 key LRU 淘汰allkeys-random# 随机淘汰volatile-ttl# 淘汰 TTL 短的4. 事务# MULTI/EXEC 打包命令非原子性仅排队MULTI SET a1SET b2EXEC# 一起执行但中间可能被其他命令插入# WATCH 实现乐观锁WATCH balance MULTI DECRBY balance100INCRBY points10EXEC# 如果 balance 被修改EXEC 返回 nil回滚注意Redis 事务不支持回滚命令语法错误会全部失败运行时错误会继续执行后续命令5. Lua 脚本原子操作-- 原子执行保证多个命令不被打断 EVALif redis.call(get, KEYS[1]) ARGV[1] then return redis.call(del, KEYS[1]) else return 0 end1lock:order:1001uuid6. 数据一致性缓存与 DB 不一致更新 DB 后删除缓存非更新缓存或 Canal 监听 Binlog主从延迟从库读取可能读到旧数据重要读走主库7. 客户端连接池Jedis 需配置连接池Lettuce 基于 Netty 自动管理管道Pipeline批量操作减少 RTTPipeline pipelinejedis.pipelined();for(int i0;i1000;i){pipeline.set(key i,value i);}pipeline.sync();// 一次性发送十一、数据结构选型决策树存储单个值 ├── 是 → String缓存、计数器 │ 存储对象多个字段 ├── 是 → Hash用户资料、配置 │ 需要队列/栈 ├── 是 → List消息队列、最新列表 │ 需要去重集合 ├── 是 → Set标签、抽奖 │ 需要排序/排行榜 ├── 是 → ZSet积分排行 │ 需要判断存在性且数据量大 ├── 是 → Bitmap日活、签到 │ 需要估算去重数 ├── 是 → HyperLogLogUV │ 需要地理位置 ├── 是 → Geospatial附近的人 │ 需要可靠消息队列 └── 是 → Stream带 ACK 的 MQ十二、总结Redis 的数据结构是为场景而生String 负责缓存计数Hash 存储对象List 实现队列Set 去重ZSet 排序Bitmap 极致空间HyperLogLog 估算去重Geospatial 处理位置Stream 支撑可靠消息。核心注意点是避免 BigKey、警惕慢查询、理解内存编码、合理设置过期

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询