Redis怎样简便地操作不同数据结构
<p>直接用 redis-cli 直连验证最高效:ping 返回 PONG 表示连通;NOAUTH 需加 -a 密码;连接失败先查服务状态和端口映射;KEYS * 要防 shell 展开,改用 --scan;TYPE 查类型避免命令误用;HSET/HGETALL 适合字段级操作;LPUSH/RPOP 简单队列优于 BLPOP;ZADD 用时间戳作 score 支持范围查询。</p>用 redis-cli 直连就能试,别急着写代码多数人卡在第一步:连不上、命令输错、返回空或报错。直接开终端跑 redis-cli 是最快验证方式,不用配连接池、不用写客户端初始化。本地默认端口是 6379,连不上先检查 Redis 是否真在跑:redis-cli ping 返回 PONG 才算通。常见错误现象:(error) NOAUTH Authentication required 说明启用了密码,得加 -a <password>;Could not connect to Redis at 127.0.0.1:6379 多半是服务没起来,或者用了 Docker 却忘了 -p 6379:6379 映射端口。临时测试别用生产实例,FLUSHDB 会清空当前库所有 key中文或特殊字符存进去没问题,但用 KEYS * 查时注意 shell 通配符会被提前展开,改用 redis-cli --scan --pattern "*"想看数据结构类型?TYPE <key> 比猜靠谱,STRLEN 对非 string 报错,LLEN 对非 list 报错——类型错,命令就废HSET 和 HGETALL 处理对象字段最省事存用户信息、配置项这类“字段+值”结构,HSET 比塞 JSON 字符串强:字段可单独读写、不需序列化反序列化、内存更省。一个 HSET user:1001 name "Alice" age "28" role "admin" 就建好哈希表,HGETALL user:1001 拿全量,HGET user:1001 age 只取单个字段。容易踩的坑:HSET 后续再设同 key 的不同字段,不会覆盖整个 hash,只更新指定字段——这点和 SET 完全不同;但 HGETALL 返回的是字段名和值交替的扁平列表(不是 JSON),程序里解析时注意成对取值。字段名别含空格或冒号,虽然 Redis 不拦,但后续用正则或日志切分时容易出岔如果字段值本身是 JSON 字符串(比如 tags: ["a","b"]),那就退化成 string 存,别硬塞进 hash——hash 适合原子字段,不适合嵌套结构HLEN 查字段数比 HGETALL 再算长度快得多,尤其大 hash用 LPUSH/RPOP 做队列,别碰 BLPOP 除非真要阻塞消息队列场景下,LPUSH job:queue {"id":123} 入队,RPOP job:queue 出队,简单可靠。Redis 本身不保证消费成功,所以业务逻辑得自己处理失败重推或死信。 arXiv Xplorer ArXiv 语义搜索引擎,帮您快速轻松的查找,保存和下载arXiv文章。
