123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package main
- import (
- "redisdog/model"
- )
- type SysCfgCache struct {
- lock chan int
- data map[string]string
- }
- func NewSysCfgCache() *SysCfgCache {
- return &SysCfgCache{
- lock: make(chan int, 1),
- data: make(map[string]string),
- }
- }
- func (s *SysCfgCache) Load() error {
- mdl := model.NewSysCfg(Db)
- values, err := mdl.GetAll()
- if err != nil {
- return err
- }
- s.lock <- 1
- for _, item := range values {
- s.data[item.CfgKey] = item.CfgValue
- }
- <-s.lock
- return nil
- }
- func (s *SysCfgCache) Get(k string) (string, bool) {
- s.lock <- 1
- v, ok := s.data[k]
- <-s.lock
- return v, ok
- }
- func (s *SysCfgCache) Set(k, v string) {
- s.lock <- 1
- s.data[k] = v
- <-s.lock
- }
- func (s *SysCfgCache) GetMulti(keys []string) map[string]string {
- s.lock <- 1
- cpy := make(map[string]string)
- for _, key := range keys {
- v, ok := s.data[key]
- if ok {
- cpy[key] = v
- } else {
- cpy[key] = ""
- }
- }
- <-s.lock
- return cpy
- }
- func (s *SysCfgCache) GetAll() map[string]string {
- s.lock <- 1
- cpy := make(map[string]string)
- for k, v := range s.data {
- cpy[k] = v
- }
- <-s.lock
- return cpy
- }
|