linux go redis,godis: go实现的一个redis项目, 很好还有博客,非常值得学习
Godis 是一個用 Go 語言實現的 Redis 服務器。本項目旨在為嘗試使用 Go 語言開發高并發中間件的朋友提供一些參考。
請注意:不要在生產環境使用使用此項目
Godis 實現了 Redis 的大多數功能,包括5種數據結構、TTL、發布訂閱以及 AOF 持久化。可以在我的博客了解更多關于 Godis 的信息。
運行 Godis
在 GitHub 的 release 頁下載 Darwin(MacOS) 和 Linux 版可執行文件。使用命令行啟動 Godis 服務器
./godis-darwin
./godis-linux
godis 默認監聽 127.0.0.1:6379,可以使用 redis-cli 或者其它 redis 客戶端連接 Godis 服務器。
godis 首先會從CONFIG環境變量中讀取配置文件路徑。若環境變量中未設置配置文件路徑,則會讀取工作目錄中的 redis.conf 文件。若 redis.conf 文件不存在則會使用自帶的默認配置。
集群模式
godis 支持以集群模式運行,請在 redis.conf 文件中添加下列配置:
peers localhost:7379,localhost:7389 // 集群中其它節點的地址
self localhost:6399 // 自身地址
可以使用 node1.conf 和 node2.conf 配置文件,在本地啟動一個雙節點集群:
CONFIG=node1.conf ./godis-darwin &
CONFIG=node2.conf ./godis-darwin &
集群模式對客戶端是透明的,只要連接上集群中任意一個節點就可以訪問集群中所有數據:
redis-cli -p 6399
支持的命令
Keys
del
expire
expireat
pexpire
pexpireat
ttl
pttl
persist
exists
type
rename
renamenx
Server
flushdb
flushall
keys
bgrewriteaof
String
set
setnx
setex
psetex
mset
mget
msetnx
get
getset
incr
incrby
incrbyfloat
decr
decrby
List
lpush
lpushx
rpush
rpushx
lpop
rpop
rpoplpush
lrem
llen
lindex
lset
lrange
Hash
hset
hsetnx
hget
hexists
hdel
hlen
hmget
hmset
hkeys
hvals
hgetall
hincrby
hincrbyfloat
Set
sadd
sismember
srem
scard
smembers
sinter
sinterstore
sunion
sunionstore
sdiff
sdiffstore
srandmember
SortedSet
zadd
zscore
zincrby
zrank
zcount
zrevrank
zcard
zrange
zrevrange
zrangebyscore
zrevrangebyscore
zrem
zremrangebyscore
zremrangebyrank
Pub / Sub
publish
subscribe
unsubscribe
如何閱讀源碼
本項目的目錄結構:
cmd: main 函數,執行入口
config: 配置文件解析
interface: 一些模塊間的接口定義
lib: 各種工具,比如logger、同步和通配符
建議按照下列順序閱讀各包:
tcp: tcp 服務器實現
redis: redis 協議解析器
datastruct: redis 的各類數據結構實現
dict: hash 表
list: 鏈表
lock: 用于鎖定 key 的鎖組件
set: 基于hash表的集合
sortedset: 基于跳表實現的有序集合
db: redis 存儲引擎實現
db.go: 引擎的基礎功能
router.go: 將命令路由給響應的處理函數
keys.go: del、ttl、expire 等通用命令實現
string.go: get、set 等字符串命令實現
list.go: lpush、lindex 等列表命令實現
hash.go: hget、hset 等哈希表命令實現
set.go: sadd 等集合命令實現
sortedset.go: zadd 等有序集合命令實現
pubsub.go: 發布訂閱命令實現
aof.go: aof持久化實現
總結
以上是生活随笔為你收集整理的linux go redis,godis: go实现的一个redis项目, 很好还有博客,非常值得学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux跑r语言代码,R语言快捷键(示
- 下一篇: c语言对浮点数的处理默认是double吗