当前位置: 首页> 文旅> 美景 > 2023年不用做核酸了吗_施工企业成本管理的方法与手段_品牌推广平台_推广关键词排名查询

2023年不用做核酸了吗_施工企业成本管理的方法与手段_品牌推广平台_推广关键词排名查询

时间:2025/7/12 4:50:44来源:https://blog.csdn.net/2303_78922833/article/details/147377383 浏览次数:0次
2023年不用做核酸了吗_施工企业成本管理的方法与手段_品牌推广平台_推广关键词排名查询

我的Redis学习笔记:从命令行到性能调优

Redis

Redis(Remote Dictionary Server)本质上是一个基于内存的键值存储系统.

安装配置Redis的过程非常简单:

# Ubuntu/Debian安装Redis
sudo apt-get update
sudo apt-get install redis-server# 启动Redis服务
sudo systemctl start redis# 检查Redis状态
redis-cli ping
# 输出应为: PONG

Redis的核心数据结构与命令

初学Redis最重要的是理解其核心数据结构。与其他数据库不同,Redis提供了多种数据类型,每种类型都有其特定用途和相应的命令集。

1. 字符串(Strings)

字符串是Redis最基本的数据类型,可以存储文本、序列化的对象或二进制数据。

# 设置键值对
SET user:1001 "{"name":"张三","email":"zhangsan@example.com"}"# 获取值
GET user:1001# 设置带过期时间的键值对(3600秒后过期)
SETEX session:token123 3600 "user_session_data"# 原子递增操作
SET counter 0
INCR counter  # 返回1
INCRBY counter 10  # 返回11

2. 哈希表(Hashes)

哈希表适合存储对象,比字符串更节省内存,且允许单独操作对象的字段。

# 存储用户信息
HMSET user:1001 name "张三" email "zhangsan@example.com" age 28 active 1# 获取特定字段
HGET user:1001 name  # 返回 "张三"# 获取所有字段
HGETALL user:1001# 增加数值字段的值
HINCRBY user:1001 age 1  # 年龄+1

3. 列表(Lists)

列表是简单的字符串链表,适合实现队列或栈结构。

# 左侧推入元素(栈)
LPUSH tasks "task1"
LPUSH tasks "task2"# 右侧推入元素(队列)
RPUSH messages "message1" 
RPUSH messages "message2"# 左侧弹出元素
LPOP tasks  # 返回 "task2"# 获取列表范围元素
LRANGE messages 0 -1  # 获取所有元素

4. 集合(Sets)

集合是无序的字符串集合,支持复杂的集合操作。

# 添加集合成员
SADD tags:article:1 "redis" "database" "nosql"# 获取所有成员
SMEMBERS tags:article:1# 判断成员是否存在
SISMEMBER tags:article:1 "redis"  # 返回1表示存在# 集合间操作
SADD user:1:follows 1001 1002 1003
SADD user:2:follows 1001 1003 1004
SINTER user:1:follows user:2:follows  # 交集,返回共同关注

5. 有序集合(Sorted Sets)

有序集合是集合的增强版,每个成员关联一个分数用于排序。

# 添加带分数的成员
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"
ZADD leaderboard 150 "player3"# 获取排名(从高到低)
ZREVRANGE leaderboard 0 2 WITHSCORES  # 前三名及分数# 增加成员分数
ZINCRBY leaderboard 50 "player1"  # player1分数+50# 获取成员排名
ZREVRANK leaderboard "player2"  # 返回player2的排名(从0开始)

高级特性实践

1. 事务操作

Redis的事务可以确保命令序列的原子性执行。

MULTI  # 开始事务
SET balance:user1 500
DECRBY balance:user1 200
INCRBY balance:user2 200
EXEC  # 执行事务

2. 键过期与淘汰策略

在内存有限的生产环境中,合理设置键过期时间和选择适当的内存淘汰策略至关重要。

# 设置过期时间
EXPIRE user:session:123 1800  # 30分钟过期# 查看剩余过期时间
TTL user:session:123# 修改Redis配置使用LRU淘汰策略
# 在redis.conf中设置
# maxmemory 2gb
# maxmemory-policy allkeys-lru

3. 发布/订阅模式

Redis的发布/订阅功能可用于构建简单的消息系统。

# 终端1:订阅频道
SUBSCRIBE notifications# 终端2:发布消息
PUBLISH notifications "系统将于今晚10点进行维护"

Redis集群实践

当单个Redis实例无法满足需求时,我开始研究Redis集群方案。以下是我搭建主从复制和哨兵模式的简要步骤:

1. 主从复制(Master-Slave Replication)

# 在从节点配置(slave)
slaveof 192.168.1.10 6379

2. 哨兵模式(Sentinel)

创建sentinel.conf文件:

sentinel monitor mymaster 192.168.1.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000

启动哨兵:

redis-sentinel sentinel.conf

3. Redis Cluster

Redis Cluster需要更复杂的配置,但提供了更好的水平扩展能力:

# 在每个节点的配置中添加
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000# 创建集群
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

踩坑记录

学习过程中难免会遇到一些问题,以下是我的一些踩坑经历:

  1. 内存碎片化问题:长时间运行后,Redis可能出现内存碎片。可以通过执行INFO memory命令查看碎片率,必要时执行MEMORY PURGE或重启实例。

  2. 大键问题:一次发现系统响应变慢,排查后发现是一个包含数百万元素的hash键造成的。解决方案是拆分大键并使用SCAN命令进行分批处理。

  3. 网络超时:在AWS上部署Redis时,经常遇到网络超时问题。增加tcp-keepalive参数和调整客户端超时设置后解决。


2025.4.20记录我与Redis共同成长的几天

关键字:2023年不用做核酸了吗_施工企业成本管理的方法与手段_品牌推广平台_推广关键词排名查询

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: