You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RedisJSON用户数据存储与操作问题:查询、排序及容量疑问

RedisJSON 用户列表存储与操作方案

关于数组存储超过128个用户的问题

RedisJSON 对数组元素数量没有128个的限制,只要单个Redis key的总数据量不超过Redis默认的单个key最大值(512MB),且服务器内存足够支撑,存多少用户都不会触发错误。你可能混淆了Redis其他数据结构的限制,但RedisJSON的数组不存在这个上限。

核心操作实现命令

先修正之前的存储方式,避免数据覆盖:

# 初始化根结构,创建空的users_list数组
JSON.SET admin_users . '{"users_list": []}'

# 追加用户到数组(替代之前直接覆盖的JSON.SET)
JSON.ARRAPPEND admin_users .users_list '{"id":1, "username":"user1", "rank_score":95}'
JSON.ARRAPPEND admin_users .users_list '{"id":2, "username":"user2", "rank_score":88}'

以下是你需要的四个操作的具体命令:

  1. 获取全部用户记录
    直接取出整个用户数组:
JSON.GET admin_users .users_list

或者取出完整的根结构:

JSON.GET admin_users
  1. 查询指定ID的用户记录
    用JSONPath过滤语法定位目标用户:
# 查询id为1的用户
JSON.GET admin_users '$.users_list[?(@.id == 1)]'
  1. 按rank_score降序排序获取记录
    RedisJSON本身没有内置排序命令,有两种可行方案:
  • 应用层处理:先取出整个数组,在后端代码中对数组按rank_score字段降序排序。
  • 结合RedisSearch实现:给用户字段创建索引,通过RedisSearch的排序查询能力实现(需先安装RedisSearch模块):
    # 创建RedisSearch索引
    FT.CREATE user_idx ON JSON PREFIX 1 admin_users SCHEMA $.id AS id NUMERIC $.rank_score AS rank_score NUMERIC $.username AS username TEXT
    
    # 按rank_score降序查询所有用户
    FT.SEARCH user_idx '*' SORTBY rank_score DESC
    
  1. 删除ID为2的用户记录
    用JSONPath定位后删除:
JSON.DEL admin_users '$.users_list[?(@.id == 2)]'

内容的提问来源于stack exchange,提问作者Gandalf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:35:27