go redigo执行lua脚本 实现原子操作

2019-04-15
阅读 2 分钟
12.1k
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua可以在很多地方使用比如游戏开发、独立应用脚本、Web应用脚本、扩招和数据库插件等等。今天记录的是在redis中执行lua脚本实现原子操作。如果不是专业些lua脚本我们可以...

Go 原子操作

2019-04-10
阅读 3 分钟
5.5k
原子操作,意思就是执行的过程不能背终端的操作。在针对某个值的原子操作执行过程中,cpu不会再去执行其他针对这个值得操作。在底层,这会由CPU提供芯片级别的支持,所以绝对有效。即使在拥有多CPU核心,或者多CPU的计算机系统中,原子操作的保证也是不可撼动的。Go语言提供了院子操作的包atomic。其中有很多函数可以帮...

Go Socket操作笔记

2019-03-30
阅读 4 分钟
9k
首先什么事Socket,翻译过来就是孔或者插座。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的本质其实是编程接口,是一个IPC接口。(IPC:进程间通信)与其他IPC方法不同的是,它可以通过网络让多个进程建立通信,是的通信双方是否在同一个机器上变得无关紧要。

Redis 数据结构之Map(字典)

2019-03-20
阅读 4 分钟
7k
哈希表:也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

Redis 数据结构之List (链表)

2019-03-17
阅读 2 分钟
2.4k
首先我们知道,链表提供了高效的节点重排能力、顺序性的访问方式、灵活的增删节点并调整链表的长度。作为一种常用的数据结构,在很多高级的编程语言里都可以看到。实现的方式大同小异。

Redis 数据结构之String

2019-03-14
阅读 2 分钟
3.4k
Redis现在是各个系统几乎都在使用的一种分布式高可用的缓存内存中的数据结构存储系统。可以作为数据库、缓存消息中间件、订阅发布系统等。我们都知道redis中有string、sets、sorted sets、hash、list类型。但是这些我们经常使用的数据结构的底层是怎么实现的。今天先记录一下string的结构。主要是参照Redis设计与实现和...

Go 利用chan嵌套chan 实现函数异步执行 顺序返回值

2019-03-12
阅读 3 分钟
7.5k
异步对于绝大多数的开发而言并不陌生,在go语言中异步的实现变得异常方便。只要在执行的方法前加一个go关键字就可以实现异步操作。但是如果需求是,按照调用的先后顺序(FIFO)来返回值我们应该怎么办。大家都知道,一系列的方法调用如果使用了异步执行那么就并不能保证返回的先后顺序,返回的先后顺序取决于每个函数耗...