NoSQL


记一次Redis被攻击的事件

最近几个月非常忙,所以很少有时间写博客,这几天终于闲了一些,于是就在整理平时的一些笔记。恰好这几天Redis服务器发生了问题,就记录一下。 我司有两款分别是2B和2C的App,类似于阿里旺旺的卖家版和买家版,里面有一个聊天的功能模块。双方可以通过这个功能聊天。内部通讯使用了环信,只是将本地账号和环信账号进行了关联。其他的信息,比如用户基本信息,好友关系,群组关系等存在Redis中,为防止Redis出现问题导致数据丢失(尽管配置了持久化),同时使用消息队列将数据写入SQLServer中进行了冗余。这是一种Redis的典型使用场景,从速度和效率上满足要求。 线上环境一直运行正常,但是在上周日(一个本该休息的日子),领导打电话过来说线上环境的用户登录不了,无法聊天,没有群相关信息。我想估计是Redis出现了问题,让领导不要着急,先让运维看看服务是否还在运行,不行的话,把Redis重启一下,因 …


.NET中使用Redis (二)

很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端,以及如何在.NET中调用Redis读取数据。本文简单介绍如何设计NoSQL数据库,以及如何使用Redis来存储对象。 和传统的关系型数据库不同,NoSQL大部分都是以键值对存储在内存中的,我们不能直接把RDBMS里面的一些做法直接移植到NoSQL中来,一个最主要的原因是,在NoSQL中缺少RDBMS中的一些诸如join ,union以及一些在关系型数据库中效率很高的执行语句,这些在NoSQL不能很好的支持,或者说效率低。 下文首先通过例子介绍在SQLServer中设计一个DB系统以及与NoSQL环境中设计一个DB的区别,最后演示如何在Redis中对数据进行读写操作。 一个简单的博客系统 假设我们要设计一个简单的博客系统,用户可以注册一个博客(Blog),然后可以在上面写文章(Post),文章可以分类( …


.NET中使用Redis

Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博、Github、StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/。 最近项目中需要使用Redis,这里简单记录一下Redis的安装,以及如何在.NET中使用Redis。 Redis安装与启动 1. 下载Redis Redis本身没有提供Windows版本的,并且在Windows上也不太稳定,一般都将其部署到Linux环境下,Redis可以在其官网上下载, MSOpenTech中提供了Windows版本,这里为了学习安装这一版本。 点击跳转到Github后,直接点击Zip下载。下载后根据自己计算机的版本选择32位或者64位进行安装。我将64位的解压后放到D:\Redis文件夹下,同时将文件夹内的redis.conf也拷贝到该目录下,这个是redis的配 …


MongoDB随笔3:使用索引

索引 索引通常能够极大的提高查询的效率。在系统中使用查询时,应该考虑建立相关的索引。在MongoDB中创建索引相对比较容易。 MongoDB中的索引在概念上和大多数关系型数据库如MySQL是一样的。当你在某种情况下需要在MySQL中建立索引,这样的情景同样适合于MongoDB。 基本操作 索引是一种数据结构,他搜集一个集合中文档特定字段的值。MongoDB的查询优化器能够使用这种数据结构来快速的对集合(collection)中的文档(collection)进行寻找和排序.准确来说,这些索引是通过B-Tree索引来实现的。 在命令行中,可以通过调用ensureIndex()函数来建立索引,该函数指定一个到多个需要索引的字段。沿用在前面的随笔中的例子,我们再things集合中的j字段上建立索引: > db.things.ensureIndex({j:1}) …


MongoDB随笔2:使用查询

一.通过查询获取数据 在深入讨论查询之前,首先来了解一下查询返回的结果——游标(cursor)对象。上一篇文章中我们使用的是最简单的find() 查询方法,它会返回结果集中的所有对象,稍后将讨论如何查询特定数据集。 为了看到集合中的所用元素,我们需要使用到find ()函数返回的cursor对象。让我们来重复上一篇文章中使用的find()函数,不过这次我们使用的是find()返回的cursor对象,然后使用while循环遍历cursor对象输出: > var cursor=db.things.find();> while(cursor.hasNext()) printjson(cursor.next());{ "_id" : ObjectId("4e205546b3fcd89b00572c31"), "name" : "mongo" …


MongoDB随笔1:简单配置

Mongo(也译芒果)名字来自humongous,意思是巨大无比的,极大的。它是一个高性能,开源,无模式的文档型NOSQL数据库。今天参照着官方的QuickStart配置了一下环境。 第一步:下载Mongodb编译好了的版本,本人机器为Win7 32位的专业版本,下载对应的Windows 32-bit版本。 第二步:将下载的Zip文件解压,修改文件夹名称,名称遵循一般的文件命名规则即可,我将其修改为 mongodb,解压后的文件放在C:\mongodb中,然后建立一个存放mongodb数据的文件夹,本人建立的文件夹为c:\data\db。 第三步:以管理员身份运行 cmd,将当前目录cd到c:\mongodb\bin 下面,然后运行 c:\mongodb\bin>mongod.exe --dbpath c:\data\db,设置数据 …