初试Redis的感受

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

最新打算写一个小的通用爬虫,爬行队列的存储是一个比较麻烦的问题,以前用过mysql,但是当数据量大到一定程度,速度就不可以忍受了。由于这种数据没什么关系在里面,自然选用NoSQL会带来更高的性能。当前有很多选择,考虑到爬虫还是比较注重性能的,我就把以性能出众为特色的Redis作为第一个考虑对象。今天总算得到一个可以休息的周末,赶紧研究了一下。其实最后结果还是有些失望的,这里简单说一下试用感受。

    既然这么新潮的东西,当然直接上官网看资料,地址是http://redis.io/,比较有意思的是有个在线版本命令行可以玩,地址是http://try.redis-db.com/。后来发现mongodb也有这样的在线命令行,但是ubuntu装软件太方便了,等发现的时候都已经装好了,汗!这里不得不称赞一下Redis,Server端真的很小,真是短小精悍型的。

    它非常有特点的就是有多种数据结构,这相比EHCache就灵活多了,当然他们也不是用来干一样的事情,没太多可比性。主要的数据结构有LinkedList、Set、SortedSet、Hash,提供的command也非常方便,比如lpush就是从头插入链表,rpush就是从尾插入链表。我个人感觉就是一个加强版的单机Memcached,直接对数据结构进行操作也能够让自己的应用非常灵活。

    但是话说回来,灵活是有代价的,用起来真是够麻烦的,只要有一点关系型操作就折腾死了。就拿官方给的例子来说吧,像mysql一样插入一个的用户注册信息就得这样:

  1. INCR global:nextUserId => 1000 
  2. SET uid:1000:username antirez 
  3. SET uid:1000:password p1pp0 
  4.  
  5. SET username:antirez:uid 1000

    这个还是一行数据,没涉及到复杂的关联关系。这要是取用户名和密码还要写两个语句,要是参数再多一点不累死人了?要不就把字符串拼接起来,取出来以后切分,我看官方给的例子里面也有这么用的,但是这也太土了吧!?key也完全是为了自己的应用拼出来的,内部使用的时候还得统一规范。难道这个value就不能像EHCache一样存个序列化的对象么,这个想法或许真的可以。另外由于只能对key查询,所以如果需要查询key还要再建一个反过来的映射。最后还要抱怨一句,命令行下面居然没有help,找了半天也没找到类似man的命令,难道以后还要对着手册操作么...

     其实说是可以用非关系型的存储方式,但是真实用起来发现还是很多不一样,偶尔还是希望用类sql的方式去查询。我在想如果真的用Redis,那代码维护难度要提升不少,为了这点性能值得么。其实Redis的关注点还是在高性能和数量级不是特别大的情况,特别是需要自己控制数据结构的时候。刚才又试用了一下mangodb,他的类sql方式查询还是很容易上手的,我在想可不可以用他来做爬行队列,如果用熟练了还可以去解决海量存储的问题。



本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/487411,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
27天前
|
存储 NoSQL 算法
09- Redis分片集群中数据是怎么存储和读取的 ?
Redis分片集群使用哈希槽分区算法,包含16384个槽(0-16383)。数据存储时,通过CRC16算法对key计算并模16383,确定槽位,进而分配至对应节点。读取时,根据槽位找到相应节点直接操作。
59 12
|
27天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
349 0
|
1月前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
283 2
|
4天前
|
NoSQL Redis
透视Redis集群:心跳检测如何维护高可用性
Redis心跳检测保障集群可靠性,通过PING命令检测主从连接状态,预防数据丢失。当连接异常时,自动触发主从切换。此外,心跳检测辅助实现`min-slaves-to-write`和`min-slaves-max-lag`策略,避免不安全写操作。还有重传机制,确保命令无丢失,维持数据一致性。合理配置心跳检测,能有效防止数据问题,提升Redis集群的高可用性。关注“软件求生”获取更多Redis知识!
42 10
透视Redis集群:心跳检测如何维护高可用性
|
6天前
|
监控 NoSQL 算法
Redis集群模式:高可用性与性能的完美结合!
小米探讨Redis集群模式,通过一致性哈希分散负载,主从节点确保高可用性。节点间健康检测、主备切换、数据复制与同步、分区策略和Majority选举机制保证服务可靠性。适合高可用性及性能需求场景,哨兵模式则适用于简单需求。一起学习技术的乐趣!关注小米微信公众号“软件求生”获取更多内容。
35 11
Redis集群模式:高可用性与性能的完美结合!
|
7天前
|
监控 NoSQL Redis
|
12天前
|
NoSQL Redis Docker
使用Docker搭建Redis主从集群
使用Docker搭建Redis主从集群
31 1
|
12天前
|
存储 NoSQL 算法
Redis 搭建分片集群
Redis 搭建分片集群
24 2
|
12天前
|
监控 NoSQL 算法
Redis 搭建哨兵集群
Redis 搭建哨兵集群
20 1
|
12天前
|
NoSQL 网络安全 Redis
Redis 搭建主从集群
Redis 搭建主从集群
19 0