- 浏览: 38899 次
- 来自: 深圳
文章分类
最新评论
-
ZacMa:
哈哈,突然感觉里面没怎么介绍,全是贴代码了
<8>redis及erl-redis阅读 -
惊涛翻案:
马博士,给我开课吧
<8>redis及erl-redis阅读
做为后端开发者,经常用到数据存储, 工作中用到过各种模式的数据存储,但很少总结下经常用到的方法,虽然很多或自己想法或从网络上来没有实践过,但记录下来简单分析下,做为备份,以便以后工作用验证, 简单分析涉及erlang做服务器最常用数据存储的方式:
1.
ets + mysql
这估计是很多采用的方法,这种方法最常用的原因是mysql大家用的已经相当普遍了,适合存储各种大量的数据, 并且mysql适合和其他语言的交互,例如php,c, c++都很方便的访问,单mysql是完全够了;这样mysql可用作永久数据存储,ets因为速度快,对erlang支持好,用来做缓存;
2.
dets + ets
这种存储也很普遍,dets用于永久的数据存储,把数据存放在磁盘中; ets做缓存,临时存放用户经常快速访问的数据,不需要永久存储的数据, 这个存储有个缺点就是ets表的存储不能跨节点使用,必须通过间接地数据传输,对于大部分应用这种存储应该还是完全可以胜任的;
3.
redis
redis做缓存不用多说,大众推荐的,并且redis支持各种类型的数据存储相当方便,各种模式的数据存储,速度也是相当快,做缓存绝对是不二的选择; 做持久存储的不足就是redis可储存的空间只能小于本服的内存,也就是redis中的数据会在缓存中全部保存一份,所以要在存储前设计好存储空间,不适合做大量数据的存储, 不过貌似redis有不少用作永久存储的,世界第二大porn网站用redis就是最好的例子,
http://www.kuqin.com/shuoit/20130806/334696.html
4
mnesia + ets
这种存储方式貌似见的不多,可能主要的原因是mnesia懂的人不是很多,把核心数据放在mnesia中不放心,并且mnesia和其他的交互性不好,php,c等没办法直接去访问数据
5
ets+文件
文件存储的弊端是需要自己设计好存储的格式,否则会读取,查询等操作比较麻烦,erlnag中有比较完备的格式,例如ets文件存储方式,用文件也是不错的选择;
http://blog.yufeng.info/archives/2842#respond
erlang中用文件写的效率并不比其他语言差;
这里ets做为cache,更方便的方式是直接用ets带的 tab2file和file2tab来文件和ets相互转化,直接从cache到磁盘,从磁盘到cache,不用自己设计文件的格式
6.
待续
1.
ets + mysql
这估计是很多采用的方法,这种方法最常用的原因是mysql大家用的已经相当普遍了,适合存储各种大量的数据, 并且mysql适合和其他语言的交互,例如php,c, c++都很方便的访问,单mysql是完全够了;这样mysql可用作永久数据存储,ets因为速度快,对erlang支持好,用来做缓存;
2.
dets + ets
这种存储也很普遍,dets用于永久的数据存储,把数据存放在磁盘中; ets做缓存,临时存放用户经常快速访问的数据,不需要永久存储的数据, 这个存储有个缺点就是ets表的存储不能跨节点使用,必须通过间接地数据传输,对于大部分应用这种存储应该还是完全可以胜任的;
3.
redis
redis做缓存不用多说,大众推荐的,并且redis支持各种类型的数据存储相当方便,各种模式的数据存储,速度也是相当快,做缓存绝对是不二的选择; 做持久存储的不足就是redis可储存的空间只能小于本服的内存,也就是redis中的数据会在缓存中全部保存一份,所以要在存储前设计好存储空间,不适合做大量数据的存储, 不过貌似redis有不少用作永久存储的,世界第二大porn网站用redis就是最好的例子,
http://www.kuqin.com/shuoit/20130806/334696.html
4
mnesia + ets
这种存储方式貌似见的不多,可能主要的原因是mnesia懂的人不是很多,把核心数据放在mnesia中不放心,并且mnesia和其他的交互性不好,php,c等没办法直接去访问数据
5
ets+文件
文件存储的弊端是需要自己设计好存储的格式,否则会读取,查询等操作比较麻烦,erlnag中有比较完备的格式,例如ets文件存储方式,用文件也是不错的选择;
http://blog.yufeng.info/archives/2842#respond
erlang中用文件写的效率并不比其他语言差;
这里ets做为cache,更方便的方式是直接用ets带的 tab2file和file2tab来文件和ets相互转化,直接从cache到磁盘,从磁盘到cache,不用自己设计文件的格式
6.
待续
发表评论
-
mysql和redis存查取简单对比<37>
2015-06-30 19:48 1555简单总结下对redis和mysql的认识: redis: ... -
erlang版本安装相关问题 <32>
2014-05-10 15:54 623<1> erlang R1603安装后,crytp ... -
关于iolist<30>
2014-01-15 10:42 623iolist是比较常用的数据结构. iolist的 ... -
erlang 字符编码 <29>
2014-01-14 16:31 1260用mochiweb通过网页发送中文到服务器,结果服务器显示乱码 ... -
<27>erlang record
2013-11-19 11:19 773平时总是忘记record的某些使用方法,每次使用都要翻文档, ... -
<26>io:format io_lib:format
2013-11-14 11:07 1313使用io_lib时候要注意参数,尤其是封装json串的时候,否 ... -
<24>用error_logger间隔记录日志
2013-10-22 16:09 650执行下面的代码 test:start(). test.erl ... -
<22> erlang中的数学计算函数相关
2013-10-10 10:34 16321. 幂函数 match:pow(m,n) 表示m的n次幂 ... -
<20>erlang中的类型和函数说明
2013-09-15 11:25 976erlang是一种动态类型的语言(运行时才决定数据类型),可以 ... -
<19>erlang中的时间,日期
2013-09-06 11:21 1194时间函数涉及的数据类型: DATA TYPES datetim ... -
<18>Efficient guide 之List handling
2013-08-31 18:45 6771 Deep and flat lists lists:fl ... -
<17>Efficiency Guide之Function
2013-08-27 22:30 5801. 函数模式匹配 模式匹配,在函数头,case和receiv ... -
<16>Efficiency Guide之Common Caveats
2013-08-11 11:07 809(1) ++ 如果做一个list的反转,不要这样, naiv ... -
<15> lists模块补充
2013-08-05 20:12 828%% 对list模块经常用到的进行补充 %% 1 对所有元素进 ... -
<15> lists模块解析和补充
2013-07-24 17:57 12%% 对list模块经常用到的进行补充 %% 1 对所有元素 ... -
<12>简述erlang的几种错误
2013-04-14 23:31 11821) badarg Bad argument. The ar ... -
<11>erlang中方便使用的模块和命令(2)
2013-04-06 22:33 797(1) 进程字典到底用不用,很多人推荐使用 http:// ... -
<9>rabbitmq网络层
2013-01-31 00:20 791抽离出了网络层, 逻辑层待以后研究 https://gith ... -
<8>redis及erl-redis阅读
2013-01-16 10:14 8491 redis的功能相当的强大,里面的发布订阅pub/su ... -
<7>pg2 分析
2012-12-08 13:42 1257网上看到erlang的pg2模块似乎没人推荐使用,但是还是有不 ...
相关推荐
标题中的“<27>erlang record”可能指的是Erlang编程语言中的Record特性,它是一种数据结构,类似于结构体或者哈希表,用于组织和操作数据。在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据...
它提供了高效且灵活的数据存储,适用于快速读写操作。ETS支持五种不同类型的表:set、ordered_set、bag、duplicate_bag和proplists,每种类型都有其特定的访问和存储策略。例如,set和ordered_set保证元素唯一,而...
解码后的结果可能是一个 `{struct, [{foo, <<"bar">>}]}` tuple,其中 `struct` 表示这是一个 JSON 对象,而 `[{foo, <<"bar">>}]` 是键值对的列表,`foo` 是键,`<<"bar">>` 是经过二进制化的值。 Jiffy 库支持...
这样的设计使得用户可以在生产数据存储不可用的情况下,通过实验不同大小的缓存和替换策略来优化系统性能。例如,当某个特定的数据集不再频繁使用时,可以通过调整缓存大小或更改替换策略来减少不必要的内存占用,...
<groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.9.0</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</...
6. **分布式特性**:Erlang的分布式特性允许在多台机器上部署服务,通过节点间的通信实现数据的共享和复制。在文件存储系统中,这可以用于实现负载均衡和故障恢复,提高整体系统的可靠性和可用性。 7. **错误处理和...
在Erlang中,binary 类型是一种专门用于存储字节序列的数据结构。与列表不同的是,binary 类型提供了高效的内存表示,并且支持强大的模式匹配功能,这使得它成为编写网络通信程序的理想选择。例如,在处理 TCP 或 ...
DETS是Erlang提供的一种持久化数据存储机制,类似于关系数据库的表,但它是基于磁盘的。 在Erlang中,DETs是用于在内存和磁盘之间存储和检索Erlang术语的数据结构。它们允许开发者快速访问数据,同时提供数据持久性...
总之,RabbitMQ结合Erlang OTP,提供了一个强大且灵活的消息中间件解决方案,广泛应用于微服务架构、物联网、大数据处理等领域。正确安装和配置RabbitMQ以及理解其核心概念和工作原理,对于构建高效、可靠的分布式...
6. **模式匹配**:Erlang的模式匹配机制使得解构复杂数据结构和条件分支变得简单。 7. **BEAM虚拟机**:Erlang运行在BEAM(Erlang虚拟机)上,BEAM为Erlang提供了高效的内存管理和垃圾回收。 8. **标准库**:OTP...
- **存储数据**:`store(DictName, Key, Value)`用于存储key-value对。 - **追加数据**:`append(DictName, Key, Value, Option)`允许向现有列表中追加新值,`Option`参数决定是追加到头部还是尾部。 - **获取数据**...
MySQL 是世界上最受欢迎的开源关系型数据库管理系统之一,广泛应用于网站开发、数据分析和其他需要高性能数据存储的应用场景。当需要在 Erlang 程序中与 MySQL 数据库进行交互时,可以使用特定的库来实现这一目标。 ...
当Erlang应用程序需要处理大量数据或者需要持久化存储时,通常会与MySQL进行对接,实现数据的存取。 在Erlang中,与MySQL对接的关键在于选择合适的驱动程序,文件名为"erlang-mysql-driver"很可能是指一个Erlang的...
Erlang的并发特性保证了RabbitMQ在处理大量并发请求时的稳定性,而RabbitMQ则负责消息的路由、存储和传递,确保数据在分布式系统中的正确流动。这种组合常用于微服务架构、物联网(IoT)以及任何需要异步处理和解耦的...
* 数据库层:使用Erlang的ETS、Mnesia、MySQL、MongoDB等数据库来存储游戏数据。 游戏服务器实现 在实现游戏服务器时,我们需要考虑以下几个方面: * 玩家和NPC的进程模型:使用Erlang的轻量级进程来模拟玩家和...
此外,Erlang OTP的Mnesia数据库系统支持分布式数据存储和事务处理,非常适合构建容错性强的系统。 总的来说,Erlang OTP 25.0 for Windows 64位是一个强大的开发工具,对于那些需要构建高可用、高性能、分布式应用...
它提供了软实时性,大部分数据存储在本地内存,支持水平分割和数据冗余,可以自动在节点间进行数据迁移。Mnesia 与其他数据库(如UnixODBC)可交互,但存在网络分区可能导致数据不一致的问题。 在实践中,Ejabberd...
在Erlang中,ETS(Erlang Term Storage)是内置的一种高效、内存中的数据库,用于存储和检索Erlang术语。然而,ETS的一个限制是它不支持全局的、跨进程的数据访问。为了解决这个问题,`gproc`库应运而生。 `gproc`...