Redis应用场景以及案例代码

Redis应用场景以及案例代码

1、基本数据类型

1.1、String类型
# 场景1: 缓存数据
# 设置缓存
SETEX user:12345:profile 3600 '{"username": "Alice", "email": "alice@example.com"}'
# 获取缓存
GET user:12345:profile
# 删除缓存
DEL user:12345:profile

# 场景2: 计数器
# 增加计数器
INCR user:12345:login_count
# 获取计数器值
GET user:12345:login_count
# 重置计数器
DEL user:12345:login_count

# 场景3: 会话管理
# 存储会话信息
SETEX session:abcd1234  1800 '{"user_id": 12345, "expiration": "2023-12-31 23:59:59"}' 
# 获取会话信息
GET session:abcd1234
# 删除会话信息
DEL session:abcd1234

1.2、List类型
# 场景1: 消息队列
# 添加消息到队列末尾
RPUSH message_queue "Message 1"
RPUSH message_queue "Message 2"
# 获取队列头部的消息(消费消息)
LPOP message_queue

# 场景2: 实时日志
# 记录日志消息到列表开头
LPUSH log_messages "2023-12-09 15:30: Error: Server crashed"
LPUSH log_messages "2023-12-09 16:15: Warning: High CPU usage"
# 获取最近的日志消息
LRANGE log_messages 0 9

# 场景3: 任务队列
# 添加任务到队列末尾
RPUSH task_queue "Task ID: 123"
RPUSH task_queue "Task ID: 124"
# 获取队列头部的任务(执行任务)
LPOP task_queue

1.3、Set类型
# 场景1: 用户标签
# 添加标签到用户的集合中
SADD user:123:tags "Tag1" "Tag2" "Tag3"
# 获取用户的所有标签
SMEMBERS user:123:tags
# 删除用户的某个标签
SREM user:123:tags "Tag2"

# 场景2: 社交网络好友
# 添加好友关系到用户的集合中
SADD user:123:friends 456 789 101
# 获取用户的所有好友
SMEMBERS user:123:friends
# 删除某个好友关系
SREM user:123:friends 789

# 场景3: 喜好爱好
# 添加喜好项目到用户的集合中
SADD user:123:hobbies "Reading" "Cooking" "Hiking"
# 获取用户的所有喜好项目
SMEMBERS user:123:hobbies
# 删除某个喜好项目
SREM user:123:hobbies "Cooking"

1.4、ZSet(Sorted Set)类型
# 场景1: 积分排行榜
# 添加用户及其分数到排行榜
ZADD leaderboard 1000 "PlayerA" 900 "PlayerB" 1200 "PlayerC" 800 "PlayerD"
# 获取排行榜前3名
ZRANGE leaderboard 0 2 WITHSCORES
# 从排行榜中移除某个玩家
ZREM leaderboard "PlayerD"

# 场景2: 待办任务列表(按截止日期排序)
# 添加待办任务及其截止日期到有序集合
ZADD todo_list 1639515600 "TaskA" 1639708400 "TaskB" 1639224000 "TaskC"
# 获取最近截止日期的任务
ZRANGE todo_list 0 2
# 删除已完成任务或过期任务
ZREMRANGEBYRANK todo_list 0 0

# 场景3: 股票排名(按股价排序)
# 添加股票及其股价到排名列表
ZADD stock_ranking 150 "StockA" 130 "StockB" 160 "StockC" 120 "StockD"
# 获取股价排名前5名
ZRANGE stock_ranking 0 4 WITHSCORES
# 移除退市或不感兴趣的股票
ZREMRANGEBYRANK stock_ranking 4 -1

1.5、Hash类型
# 场景1: 用户信息存储
# 存储用户详细信息
HMSET user_info:12345 username "Alice" email "alice@example.com" age 30
# 获取用户信息字段
HGET user_info:12345 username
# 删除用户信息的邮箱字段
HDEL user_info:12345 email

# 场景2: 产品属性存储
# 存储产品的属性信息
HMSET product:1001 name "Laptop" price 999 brand "BrandX"
# 获取产品的价格
HGET product:1001 price
# 删除产品的名称字段
HDEL product:1001 name

# 场景3: 配置管理
# 存储应用程序的配置参数
HMSET app_config cache_enabled true max_connections 100 log_level "info"
# 获取日志级别配置
HGET app_config log_level
# 删除缓存开关配置
HDEL app_config cache_enabled

2、特殊数据类型

2.1、HyperLogLog(HLL)基数
# 场景1: 统计独立访问用户数
# 添加用户访问记录到 HyperLogLog 数据结构
PFADD daily_visitors "user1" "user2" "user3" "user4"
# 统计独立访问用户数
PFCOUNT daily_visitors

# 场景2: 统计在线用户数
# 添加在线用户到 HyperLogLog 数据结构
PFADD online_users "userA" "userB" "userC" "userD"
# 统计在线用户数
PFCOUNT online_users

# 场景3: 统计唯一搜索查询
# 添加搜索查询到 HyperLogLog 数据结构
PFADD unique_searches "query1" "query2" "query3" "query4"
# 统计唯一搜索查询数
PFCOUNT unique_searches

2.2、BitMap类型
# Bitmaps(位图)场景示例

# 场景1: 用户在线状态跟踪
# 使用位图记录用户的在线状态,每一位表示一分钟的在线状态。
SETBIT user:123:online 0 1  # 用户在第1分钟在线
SETBIT user:123:online 30 1 # 用户在第31分钟在线
SETBIT user:123:online 59 1 # 用户在第60分钟在线

# 获取用户在某一分钟的在线状态。
GETBIT user:123:online 30 # 检查用户是否在第31分钟在线

# 场景2: 用户签到记录
# 使用位图记录用户的签到情况,每一位表示一天,位的值表示用户是否签到。
SETBIT user:456:checkins 0 1  # 用户在第1天签到
SETBIT user:456:checkins 7 1  # 用户在第8天签到
SETBIT user:456:checkins 15 1 # 用户在第16天签到

# 统计用户连续签到的天数。
BITCOUNT user:456:checkins
2.3、Geospatial类型
# Geospatial(地理空间)场景示例

# 场景1: 商店位置查询
# 存储商店的地理位置信息。
GEOADD stores -73.9806 40.7648 "StoreA"
GEOADD stores -74.0089 40.7128 "StoreB"
GEOADD stores -73.9897 40.7394 "StoreC"

# 查询附近的商店。
GEORADIUS stores -73.9840 40.7591 5 km

# 场景2: 飞机航班距离计算
# 存储飞机航班的起始和终点坐标。
GEOADD flights -73.8734 40.7736 "JFK" -87.9047 41.9786 "ORD"
GEOADD flights -118.4075 33.9434 "LAX" -71.2760 42.3631 "BOS"

# 计算航班的距离。
GEODIST flights "JFK" "ORD" km
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值