内容简介:Go in memory cache using gRPC to generate API. Functionalities includeOnce you've cloned this repo, run these commands in this directory:
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-cacheormake server -
./server-cache -addr=":5001"to run server on port5001
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 port5001
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
30天自制操作系统
[日] 川合秀实 / 周自恒、李黎明、曾祥江、张文旭 / 人民邮电出版社 / 2012-8 / 99.00元
自己编写一个操作系统,是许多程序员的梦想。也许有人曾经挑战过,但因为太难而放弃了。其实你错了,你的失败并不是因为编写操作系统太难,而是因为没有人告诉你那其实是一件很简单的事。那么,你想不想再挑战一次呢? 这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、C语言开始解说,让你在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位......一起来看看 《30天自制操作系统》 这本书的介绍吧!