gRPC-cache

栏目: IT技术 · 发布时间: 5年前

内容简介:Go in memory cache using gRPC to generate API. Functionalities includeOnce you've cloned this repo, run these commands in this directory:

gRPC-cache

In memory cache, using gRPC

Contents

About

Go in memory cache using gRPC to generate API. Functionalities include

  • Adding/Replacing key/value
  • Getting value using a key
  • Getting all keys
  • Deleting a particular key
  • Deleting all keys
  • Concurrency safe and on client side calls can be made using goroutines

Requirements

Getting Started

Once you've cloned this repo, run these commands in this directory:

# Only needed the first time:
$ make build

# Then run to start server
$ ./server-cache --help

Usage of ./server-cache:
  -addr string
      Address on which you want to run server (default ":5001")
  -cln int
      Cleanup interval duration of expired cache is 5 min (default 5)
  -exp int
      Default expiration duration of cache is 10 min (default 10)

# To use client
$ ./client-cache --help

Usage of ./client-cache:
  -addr string
      Address on which you want to run server (default ":5001")

Usage

You can run server in 2 ways either using local setup or docker.

Local

  • Start your server ./server-cache or make server
  • ./server-cache -addr=":5001" to run server on port 5001

Docker

make docker
make dockerServer

After running the server, start your client ./client-cache or make client in a different terminal

  • ./client-cache -addr=":5001" is server is running running on port 5001

API

Proto syntax proto3 is used. You can find the proto file here

Add

This is used to add key/value to the cache

func (c Cache) Add(ctx context.Context, item *api.Item) (*api.Item, error)

Get

This is used to get key value pair for a particular key

func (c Cache) Get(ctx context.Context, args *api.GetKey) (*api.Item, error)

GetAllItems

Used to get all key value pairs

func (c Cache) GetAllItems(ctx context.Context, in *empty.Empty) (*api.AllItems, error)

DeleteKey

Used to delete item by a particular key from the cache

func (c Cache) DeleteKey(ctx context.Context, args *api.GetKey) (*api.Success, error)

DeleteAll

Used to clear the whole cache

func (c Cache) DeleteAll(ctx context.Context, in *empty.Empty) (*api.Success, error)

Testing

After running make build just run make test to run the tests. It has coverage of 91.2%

go test api/server/* -v -cover -race
=== RUN   TestAdd
--- PASS: TestAdd (0.04s)
=== RUN   TestGet
--- PASS: TestGet (0.03s)
=== RUN   TestGetAllItems
--- PASS: TestGetAllItems (0.01s)
=== RUN   TestDeleteKey
--- PASS: TestDeleteKey (0.01s)
=== RUN   TestDeleteAll
--- PASS: TestDeleteAll (0.01s)
=== RUN   TestGetDeletedKey
--- PASS: TestGetDeletedKey (0.01s)
=== RUN   TestDeleteKeyByExpiration
--- PASS: TestDeleteKeyByExpiration (2.01s)
PASS
coverage: 91.2% of statements
ok  	command-line-arguments	3.617s	coverage: 91.2% of statements

Example

Please refer to examples directory for more information


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微信营销与运营

微信营销与运营

王易 / 机械工业出版社 / 2014-1-1 / CNY 49.00

这是一本深度介绍微信营销的书,也是一本系统讲解微信公众账号运营的书,它基于微信的最新版本,从策略、方法、技巧与实践等多角度详细解析了微信的营销与运营,所有内容都是行业经验的结晶,旨在为企业运用微信提供有价值的参考。 本书首先从商业模式角度全面分析了微信5.0推出的“扫一扫”、表情商店、微信游戏、微信支付等新功能背后的商业机会,以及订阅号折叠给企业带来的影响和应对策略;其次从运营角度系统归纳了......一起来看看 《微信营销与运营》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具