go语言手写一个类似兼容redis的nosql数据库代码
代码语言:golang
所属分类:其他
代码描述:go语言手写一个类似兼容redis的nosql数据库代码
代码标签: go 语言 手写 一个 类似 兼容 redis nosq l数据库 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
// main.go
package main
import (
"bufio"
"fmt"
"log"
"net"
"strconv"
"strings"
"sync"
"time"
)
// 数据存储结构
type DataStore struct {
mu sync.RWMutex
data map[string]string
expires map[string]time.Time
}
// 创建新的数据存储
func NewDataStore() *DataStore {
ds := &DataStore{
data: make(map[string]string),
expires: make(map[string]time.Time),
}
// 启动过期清理协程
go ds.cleanupExpired()
return ds
}
// 定期清理过期的键
func (ds *DataStore) cleanupExpired() {
ticker := time.NewTicker(1 * time.Second)
for range ticker.C {
ds.mu.Lock()
now := time.Now()
for key, expireTime := range ds.expires {
if now.After(expireTime) {
delete(ds.data, key)
delete(ds.expires, key)
}
}
ds.mu.Unlock()
}
}
// SET操作
func (ds *DataStore) Set(key, value string, expire int) {
ds.mu.........完整代码请登录后点击上方下载按钮下载查看















网友评论0