mirror of
https://github.com/HDT3213/godis.git
synced 2025-09-26 21:01:17 +08:00
document for configuration
This commit is contained in:
15
README.md
15
README.md
@@ -26,8 +26,8 @@ Key Features:
|
|||||||
- Transaction is **Atomic** and Isolated. If any errors are encountered during execution, godis will rollback the executed commands
|
- Transaction is **Atomic** and Isolated. If any errors are encountered during execution, godis will rollback the executed commands
|
||||||
- Replication
|
- Replication
|
||||||
- Server-side Cluster which is transparent to client. You can connect to any node in the cluster to access all data in the cluster.
|
- Server-side Cluster which is transparent to client. You can connect to any node in the cluster to access all data in the cluster.
|
||||||
- Use the raft algorithm to maintain cluster metadata. (experimental)
|
- Cluster metadata management based on Raft. Support dynamic expansion, rebalancing and failover.
|
||||||
- `MSET`, `MSETNX`, `DEL`, `Rename`, `RenameNX` command is supported and atomically executed in cluster mode, allow over multi node
|
- `MSET`, `MSETNX`, `DEL`, `Rename`, `RenameNX` command is supported and atomically executed in cluster mode, allow over multi node.
|
||||||
- `MULTI` Commands Transaction is supported within slot in cluster mode
|
- `MULTI` Commands Transaction is supported within slot in cluster mode
|
||||||
|
|
||||||
If you could read Chinese, you can find more details in [My Blog](https://www.cnblogs.com/Finley/category/1598973.html).
|
If you could read Chinese, you can find more details in [My Blog](https://www.cnblogs.com/Finley/category/1598973.html).
|
||||||
@@ -54,17 +54,10 @@ The program will try to read config file path from environment variable `CONFIG`
|
|||||||
|
|
||||||
If environment variable is not set, then the program try to read `redis.conf` in the working directory.
|
If environment variable is not set, then the program try to read `redis.conf` in the working directory.
|
||||||
|
|
||||||
If there is no such file, then the program will run with default config.
|
Please see [example.conf](./example.conf) for all configuration information.
|
||||||
|
|
||||||
### cluster mode
|
### cluster mode
|
||||||
|
|
||||||
Godis can work in cluster mode, please append following lines to redis.conf file
|
|
||||||
|
|
||||||
```ini
|
|
||||||
peers localhost:7379,localhost:7389 // other node in cluster
|
|
||||||
self localhost:6399 // self address
|
|
||||||
```
|
|
||||||
|
|
||||||
We provide node1.conf and node2.conf for demonstration. use following command line to start a two-node-cluster:
|
We provide node1.conf and node2.conf for demonstration. use following command line to start a two-node-cluster:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -78,6 +71,8 @@ Connect to a node in the cluster to access all data in the cluster:
|
|||||||
redis-cli -p 6399
|
redis-cli -p 6399
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Please refer to [example.conf](./example.conf) for cluster configuration.
|
||||||
|
|
||||||
## Supported Commands
|
## Supported Commands
|
||||||
|
|
||||||
See: [commands.md](https://github.com/HDT3213/godis/blob/master/commands.md)
|
See: [commands.md](https://github.com/HDT3213/godis/blob/master/commands.md)
|
||||||
|
15
README_CN.md
15
README_CN.md
@@ -19,7 +19,7 @@ Godis 是一个用 Go 语言实现的 Redis 服务器。本项目旨在为尝试
|
|||||||
- 主从复制
|
- 主从复制
|
||||||
- Multi 命令开启的事务具有**原子性**和隔离性. 若在执行过程中遇到错误, godis 会回滚已执行的命令
|
- Multi 命令开启的事务具有**原子性**和隔离性. 若在执行过程中遇到错误, godis 会回滚已执行的命令
|
||||||
- 内置集群模式. 集群对客户端是透明的, 您可以像使用单机版 redis 一样使用 godis 集群
|
- 内置集群模式. 集群对客户端是透明的, 您可以像使用单机版 redis 一样使用 godis 集群
|
||||||
- 使用 raft 算法维护集群元数据(测试中)
|
- 使用 Raft 算法维护集群元数据。支持动态扩缩容、自动平衡和主从切换。
|
||||||
- `MSET`, `MSETNX`, `DEL`, `Rename`, `RenameNX` 命令在集群模式下原子性执行, 允许 key 在集群的不同节点上
|
- `MSET`, `MSETNX`, `DEL`, `Rename`, `RenameNX` 命令在集群模式下原子性执行, 允许 key 在集群的不同节点上
|
||||||
|
|
||||||
可以在[我的博客](https://www.cnblogs.com/Finley/category/1598973.html)了解更多关于
|
可以在[我的博客](https://www.cnblogs.com/Finley/category/1598973.html)了解更多关于
|
||||||
@@ -43,17 +43,12 @@ godis 默认监听 0.0.0.0:6399,可以使用 redis-cli 或者其它 redis 客
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
godis 首先会从CONFIG环境变量中读取配置文件路径。若环境变量中未设置配置文件路径,则会尝试读取工作目录中的 redis.conf 文件。 若 redis.conf 文件不存在则会使用自带的默认配置。
|
godis 首先会从CONFIG环境变量中读取配置文件路径。若环境变量中未设置配置文件路径,则会尝试读取工作目录中的 redis.conf 文件。
|
||||||
|
|
||||||
|
所有配置项均在 [example.conf](./example.conf) 中作了说明。
|
||||||
|
|
||||||
## 集群模式
|
## 集群模式
|
||||||
|
|
||||||
godis 支持以集群模式运行,请在 redis.conf 文件中添加下列配置:
|
|
||||||
|
|
||||||
```ini
|
|
||||||
peers localhost:7379,localhost:7389 // 集群中其它节点的地址
|
|
||||||
self localhost:6399 // 自身地址
|
|
||||||
```
|
|
||||||
|
|
||||||
可以使用 node1.conf 和 node2.conf 配置文件,在本地启动一个双节点集群:
|
可以使用 node1.conf 和 node2.conf 配置文件,在本地启动一个双节点集群:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -67,6 +62,8 @@ CONFIG=node2.conf ./godis-darwin &
|
|||||||
redis-cli -p 6399
|
redis-cli -p 6399
|
||||||
```
|
```
|
||||||
|
|
||||||
|
更多配置请查阅 [example.conf](./example.conf)
|
||||||
|
|
||||||
## 支持的命令
|
## 支持的命令
|
||||||
|
|
||||||
请参考 [commands.md](https://github.com/HDT3213/godis/blob/master/commands.md)
|
请参考 [commands.md](https://github.com/HDT3213/godis/blob/master/commands.md)
|
||||||
|
156
example.conf
Normal file
156
example.conf
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
|
||||||
|
####################### Godis Configuration Example ######################
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Godis use redis.conf in the working dir by default.
|
||||||
|
# You could use CONFIG environment to set your config file path.
|
||||||
|
# Godis 默认会使用当前目录下的 redis.conf 作为配置文件
|
||||||
|
# 你可以使用 CONFIG 环境变量来指定配置文件:
|
||||||
|
#
|
||||||
|
# CONFIG=my.conf ./godis
|
||||||
|
#
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Bind ip address. At most one for now
|
||||||
|
bind 0.0.0.0
|
||||||
|
|
||||||
|
# Accept connections on the specified port
|
||||||
|
port 6399
|
||||||
|
|
||||||
|
# The working directory. Using current directory by default.
|
||||||
|
# Godis will write appendonly file, rdb file and raft database (in cluster mode) in this directory
|
||||||
|
#
|
||||||
|
# dir /opt/godis
|
||||||
|
|
||||||
|
# number of databases
|
||||||
|
databases 16
|
||||||
|
|
||||||
|
# use gnet tcp server for better performance
|
||||||
|
# 使用 gnet 库来提高 IO 性能
|
||||||
|
#
|
||||||
|
# use-gnet no
|
||||||
|
|
||||||
|
############################## PERSISTENCE ###############################
|
||||||
|
|
||||||
|
# Enable AOF persistence
|
||||||
|
# Please be advised, Godis's rdb is generated by aof rewriting.
|
||||||
|
# If you need any form of persistence or replication, you need to enable AOF.
|
||||||
|
# 启用 AOF 持久化
|
||||||
|
# Godis 的 rdb 基于 aof 重写产生,如果你需要使用 rdb 或者主从复制功能必须先启用 AOF
|
||||||
|
appendonly no
|
||||||
|
|
||||||
|
# The filename of the append only file.
|
||||||
|
# It is in the directory specified by the `dir` configuration
|
||||||
|
# aof 文件名, 文件位于 dir 项配置的工作目录里
|
||||||
|
appendfilename appendonly.aof
|
||||||
|
|
||||||
|
# Determine how often to fsync appendonly files
|
||||||
|
# - always: call fsync() after everywrite
|
||||||
|
# - everysec: call fsync() after every second
|
||||||
|
# - no: never call fsync() manually, let the OS determines.
|
||||||
|
#
|
||||||
|
|
||||||
|
# appendfsync always
|
||||||
|
appendfsync everysec
|
||||||
|
# appendfsync no
|
||||||
|
|
||||||
|
# AOF rewrite will produce RDB format. Also known as hybrid persistence
|
||||||
|
aof-use-rdb-preamble yes
|
||||||
|
|
||||||
|
# RDB filename
|
||||||
|
dbfilename test.rdb
|
||||||
|
|
||||||
|
################################## SECURITY ###################################
|
||||||
|
|
||||||
|
|
||||||
|
# Password of godis server
|
||||||
|
#
|
||||||
|
# requirepass yourpassword
|
||||||
|
|
||||||
|
################################### REPLICA ###################################
|
||||||
|
|
||||||
|
# If the master node set `requirepass`, set `masterauth` as the password of
|
||||||
|
# the master, then this node can pass the authentication of its master
|
||||||
|
# 如果主节点配置了密码,将它的密码填写在此处以便从节点可以通过认证
|
||||||
|
#
|
||||||
|
# masterauth masterpassword
|
||||||
|
|
||||||
|
# If a slave hasn't receives data from its master more than
|
||||||
|
# `repl-timeout` seconds, the replica will be stopped
|
||||||
|
# 如果从节点超过 repl-timeout 秒没有收到主节点的消息,主从复制将自动停止
|
||||||
|
#
|
||||||
|
# repl-timeout 60
|
||||||
|
|
||||||
|
# If the slave node is behind a NAT, which means its master cannot reach it by
|
||||||
|
# dial the peer address of the tcp connection, then you can set announce address.
|
||||||
|
#
|
||||||
|
# When announce address has been set, the master will dial the announce address
|
||||||
|
# to reach this node.
|
||||||
|
# 如果当前节点处于使用 NAT 的子网中导致主节点无法通过 tcp 连接中的地址找到它时可以配置此项
|
||||||
|
# 主节点将尝试连接 slave-announce-ip:slave-announce-port 来与它通信
|
||||||
|
#
|
||||||
|
# slave-announce-ip 5.5.5.5
|
||||||
|
# slave-announce-port 1234
|
||||||
|
|
||||||
|
|
||||||
|
################################### CLUSTER ###################################
|
||||||
|
|
||||||
|
# Godis provides a Raft-based cluster, which is transparent to the client.
|
||||||
|
# You can use it like a standalone redis.
|
||||||
|
|
||||||
|
|
||||||
|
# Enable cluster mode.
|
||||||
|
# Other cluster configurations are effective only when `cluster-enable` is yes
|
||||||
|
# 启用集群模式
|
||||||
|
# 其它集群配置项仅在 cluster-enable 是 yes 时生效
|
||||||
|
#
|
||||||
|
# cluster-enable yes
|
||||||
|
|
||||||
|
# Raft server listen address
|
||||||
|
# Raft 服务器监听地址
|
||||||
|
#
|
||||||
|
# raft-listen-address 0.0.0.0:16666
|
||||||
|
|
||||||
|
|
||||||
|
# If the node is behind a NAT, which means other nodes cannot reach it by
|
||||||
|
# dial the peer address of the tcp connection, then you can set announce address.
|
||||||
|
#
|
||||||
|
# When announce address has been set, other nodes will dial the announce address
|
||||||
|
# to reach this node.
|
||||||
|
# 如果当前节点处于使用 NAT 的子网中导致其它节点无法通过 tcp 连接中的地址找到它时可以配置此项
|
||||||
|
# 其它节点将尝试连接 raft-advertise-address 来与它通信
|
||||||
|
#
|
||||||
|
# raft-advertise-address 4.4.4.4:16666
|
||||||
|
|
||||||
|
# Set to yes to start a create a new cluster.
|
||||||
|
# Nodes will persist the cluster metadata and will automatically rejoin the
|
||||||
|
# cluster after restart.
|
||||||
|
# This configuration takes effect only when there is no cluster data on the disk.
|
||||||
|
# 设为 yes 可以创建一个新集群
|
||||||
|
# 集群中的节点会持久化集群元信息并在重启后自动重新加入集群,因此此配置仅在磁盘上没有集群数据时生效
|
||||||
|
#
|
||||||
|
# cluster-as-seed yes
|
||||||
|
|
||||||
|
# This node will send request to cluster-seed to join a cluster.
|
||||||
|
# cluster-seed can be any node in the cluster.
|
||||||
|
# Use redis service address here! Do NOT use raft service address!
|
||||||
|
# After joined the cluster, node will obtain and persist complete metadata.
|
||||||
|
# This configuration only takes effect when joining the cluster
|
||||||
|
# and is invalid when the node is restarted.
|
||||||
|
# 当前节点启动时会向 cluster-seed 发送加入集群的请求
|
||||||
|
# 集群中的任何一个节点都可以充当 cluster-seed
|
||||||
|
# 应填写 Redis 服务的地址,不要使用 raft 服务的地址
|
||||||
|
# 节点成功加入集群后会持久化集群元信息,因此重启时不会再使用此配置
|
||||||
|
#
|
||||||
|
# cluster-seed 6.6.6.6:6399
|
||||||
|
|
||||||
|
# This node join cluster as a slave of `master-in-cluster`.
|
||||||
|
# The master-slave relationship will be automatically adjusted during cluster operation.
|
||||||
|
# This configuration only takes effect when joining the cluster.
|
||||||
|
# Use redis service address here! Do NOT use raft service address!
|
||||||
|
# 当前节点将作为 master-in-cluster 的从节点加入集群
|
||||||
|
# 集群运行过程中会自动调整主从关系,此配置仅在加入集群时生效
|
||||||
|
# 应填写 Redis 服务的地址,不要使用 raft 服务的地址
|
||||||
|
#
|
||||||
|
# master-in-cluster 6.6.6.6:6399
|
Reference in New Issue
Block a user