Tendis支持非集群的部署方式

本文介绍了如何解决TendisPlus在不同指令集平台上的启动错误,包括从直接下载到源代码编译的过程,安装必要的依赖,如GCC和CMake,以及配置文件的修改以实现远程连接和安全设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一开始直接下载tendisplus-2.6.0-rocksdb-v6.23.3.tgz直接解压启动的,启动报错

查了文档才知道

指令集问题(x86/x86_64平台下):如果tendisplus编译与运行的环境不一致,可能会出现指令集不兼容的情况。例如新老CPU平台间,以及对sse/avx指令集的支持等。

需要源码编译

二、源码编辑

安装官方文档

  • g++ (required by c++17, version >= 5.5)
  • cmake (version >= 3.13.0)

是否安装gcc 

rpm -q gcc

 

$ git clone https://github.com/Tencent/Tendis.git
$ cd Tendis
$ git submodule update --init --recursive
$ mkdir build
$ cd build
$ cmake ..
$ make -j16
$ cd ..

run

# db路径(在配置文件中通过`dir`进行配置)需在系统运行前创建
$ mkdir -p home/db
$ build/bin/tendisplus tendisplus.conf
  • 运行Redis原生测试
sh ./redistest.sh

 三、配置远程链接

修改tendisplus.conf ,能外网访问

# tendisplus configuration for testing
# 绑定本机IIP
bind 192.168.1.140 
#设置访问密码
requirepass 123456
port 51002
daemon yes
#设置单机模式,非集群模式,默认值no
cluster-enabled no
loglevel notice
logdir ./home/log
dumpdir ./home/dump
dir ./home/db
pidfile ./home/tendisplus.pid
slowlog ./home/log/slowlog
rocks.blockcachemb 4096
executorThreadNum 48

<think>好的,用户想了解如何从Redis迁移到腾讯Tendis,替换方案、迁移指南以及兼容性问题。首先,我需要参考用户提供的引用内容,特别是引用[4],里面提到了Tendis兼容Redis协议,支持大多数命令,还有安装部署和测试步骤。 首先,迁移方案需要考虑平滑过渡,可能采用双写或者数据同步的方式。用户可能需要同时运行Redis和Tendis,逐步迁移数据。另外,兼容性方面,虽然Tendis支持大多数Redis命令,但可能存在一些不兼容的地方,需要测试。 然后,迁移步骤应该包括环境准备,比如安装Tendis,修改配置,然后进行数据迁移。可能使用Tendis自带的工具或者第三方工具如redis-port。同时,验证数据一致性是关键,需要对比两者的数据是否一致。 兼容性问题方面,用户需要注意不支持的Redis命令,比如可能涉及Lua脚本或者某些数据类型的命令。另外,持久化机制不同,Tendis使用RocksDB,这可能影响性能表现,尤其是在写入和读取模式上。 还要考虑高可用和扩展性,Tendis的集群管理可能与Redis不同,支持在线扩容和故障恢复,用户需要调整运维流程。最后,回滚方案也很重要,以防迁移过程中出现问题。 需要确保用户按照步骤测试,先在非生产环境验证,再逐步切流。同时,提醒用户关注监控指标,确保迁移后的稳定性。可能还要参考官方文档,确认是否有最新的迁移工具或最佳实践。</think>### 从Redis迁移到腾讯Tendis的替换方案与指南 #### 一、迁移前准备 1. **兼容性验证** Tendis支持大多数Redis命令(如`GET/SET`等基础操作),但需注意以下差异: - 不支持Redis的`Lua脚本`和`BITOP`等部分高级命令[^4] - 事务实现机制不同,建议改用Tendis的`MULTI/EXEC`模式 - 使用`redis-cli --tendis-test`命令验证业务关键命令的兼容性 2. **环境部署** - 下载Tendis安装包(当前稳定版为2.1.2-rocksdb-v5.13.4)[^4] - 修改配置文件`tendis.conf`: ```bash bind 0.0.0.0 # 允许外部访问 port 51002 # 默认端口 storage rocksdb ``` - 启动服务:`./scripts/start.sh`[^4] #### 二、迁移方案 **方案1:双写过渡(推荐)** ```python # 示例伪代码:同时写入Redis和Tendis def write_data(key, value): redis_client.set(key, value) tendis_client.set(key, value) # 添加异步校验逻辑确保数据一致性 ``` - 优点:业务无感知,可逐步验证 - 周期:建议运行1-2周后切换读操作 **方案2:在线数据迁移** 1. 使用Tendis内置迁移工具: ```bash ./bin/tendis-cli -p 51002 migrate --host=原RedisIP --port=6379 --keys=* ``` 2. 或用redis-port工具同步: ```bash redis-port decode --from=redis.aof | redis-port encode --target=tendis.rdb ``` #### 三、关键注意事项 1. **数据持久化差异** Redis使用RDB/AOF,而Tendis默认采用RocksDB的WAL日志+LSM树结构,需关注写入吞吐量变化 2. **集群管理变化** - Tendis采用去中心化架构,通过gossip协议通信 - 扩容时数据按slot迁移,支持在线扩缩容(Redis Cluster需要手动resharding)[^3] 3. **监控指标调整** - 新增RocksDB的`compaction`监控项 - 关注`keyspace_hits`与`storage_engine_read_latency`的关联指标 #### 四、回滚方案 1. 保持Redis实例在线至少48小时 2. 准备反向同步脚本: ```bash tendis-cli --rdb -p 51002 | redis-cli -h 原RedisIP -p 6379 --pipe ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在天堂抽烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值