nosql

初识Redis(一)

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-21 19:33:31
什么是 Redis ? Redis是一个开源的使用ANSI C语言编写、支持网络、可基于 内存 亦可持久化的 日志 型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由 VMware 主持。 它提供五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型 它是一种NoSQL数据库。 为什么要使用Redis? Redis都可以干什么事儿: 缓存,毫无疑问这是Redis当今最为人熟知的使用场景。再提升服务器性能方面非常有效; 排行榜,如果使用传统的关系型数据库来做这个事儿,非常的麻烦,而利用Redis的SortSet数据结构能够非常方便搞定; 计算器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力; 好友关系,利用集合的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能; 简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;

本地缓存google.guava及分布式缓存redis 随笔

人盡茶涼 提交于 2020-01-21 12:34:36
近期项目用到了缓存,我选用的是主流的google.guava作本地缓存,redis作分布式 缓存,先说说我对本地缓存和分布式缓存的理解吧,可能不太成熟的地方,大家指出,一起 学习.本地缓存的特点是速度快,不会受到网络阻塞的干扰,但由于是放在本地内存中,所 以容量较小,不能项目间共享比IO效率高比redis,且不会持久化.所以拿来存储一些数据 很少,但又经常执行的,甚至只要启动程序就会访问的数据. 我们可以自定义初始化本地缓存的方法,指定存储量和缓存淘汰机制. /** * 初始化本地缓存 */@PostConstructpublic void init() { commonCache = CacheBuilder.newBuilder() //设置缓存的 .initialCapacity(10) //设置缓存中最大可以存储的key数量,超过就会按照LRU的策略进行清除 .maximumSize(100).expireAfterWrite(60, TimeUnit.SECONDS).build();}几种常见的内存淘汰机制:LRU,LFULFU:根据数据的历史访问频率来淘汰数据LRU:根据访问时间的前后来淘汰数据,优先保留近期访问的数据guava是极度轻量级的cache,只具备基本的增删改查和刷新数据,淘汰数据等功能,但能满足大部分需求.redis作为常用的分布式缓存

CouchBase 1.8 and 2.0 Erlang SDKs? Why is Erlang Left out

戏子无情 提交于 2020-01-21 04:48:05
问题 I really enjoy seeing the great work being done by CouchBase team on providing us with a great NoSQL solution. However, despite the fact that there are few erlang Web developers compared to perhaps ruby, PHP, java or Python, the number of developers picking up erlang are increasing. Which brings me to why on their SDK page, they have constantly left out Erlang. With yaws web Server, Mochiweb, and many other Erlang Web libraries, why in the world would they not support Erlang in their NoSQL

mongo group and count with condition

China☆狼群 提交于 2020-01-21 04:18:26
问题 I'm trying to group a set of documents and count them based on their value. For example { "_id" : 1, "item" : "abc1", "value" : "1" } { "_id" : 2, "item" : "abc1", "value" : "1" } { "_id" : 3, "item" : "abc1", "value" : "11" } { "_id" : 4, "item" : "abc1", "value" : "12" } { "_id" : 5, "item" : "xyz1", "value" : "2" } Here I would like to group by "item" and get in return a count how many times the "value" is bigger than 10 and how many times smaller. So: { "item": "abc1", "countSmaller": 2,

Why nosql with cassandra instead of mysql?

时光毁灭记忆、已成空白 提交于 2020-01-21 02:59:05
问题 I work on large database (hundreds of GB) and Mysql now gives me more or less satisfaction. I hesitate to cassandra on launch. What I want to know everything before, so this kind of DBMS NoSQL is supposed to be faster than MySQL? Several points: The change in the number of column on a row In Mysql, they must all be defined in advance. The columns set in the structure of the table. NoSQL in, they can be varied. There is real difference performance on a fixed structure ? and why ? Do not make

redis和memcache的区别分析

陌路散爱 提交于 2020-01-20 11:49:20
传统MySQL+ Memcached架构遇到的问题   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:    1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。   2.Memcached与MySQL数据库数据一致性问题。   3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。   4.跨机房cache同步问题。  众多NoSQL百花齐放,如何选择   最近几年,业界不断涌现出很多各种各样的NoSQL产品,那么如何才能正确地使用好这些产品,最大化地发挥其长处,是我们需要深入研究和思考的问题,实际归根结底最重要的是了解这些产品的定位,并且了解到每款产品的tradeoffs,在实际应用中做到扬长避短,总体上这些NoSQL主要用于解决以下几种问题    1.少量数据存储,高速读写访问。此类产品通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景。   2.海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。   3

15个nosql数据库

喜欢而已 提交于 2020-01-20 00:39:16
1、MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。 MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来非常简单,几乎和DataMapper一模一样,功能非常强大。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名

mariadb(第一章)

China☆狼群 提交于 2020-01-19 22:49:39
数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据 更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。 数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 数据库的种类 按照早起的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库 关系型数据库   (1)关系型数据库的由来 虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题 (2)关系型数据库介绍

mariadb(第一章)

给你一囗甜甜゛ 提交于 2020-01-19 22:40:58
mariadb(第一章) 数据库介绍 1.什么是数据库? 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据 更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。 数据库诞生于1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 数据库的种类 按照早起的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库 关系型数据库   (1)关系型数据库的由来      虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题 (2)关系型数据库介绍

末学者笔记--MariaDB 数据库 1玄

北城以北 提交于 2020-01-19 21:50:02
MariaDB 数据库 1 玄 一. 数据库介绍 简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织,存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。 更简单的理解形象,数据库和我们生活追踪存放杂物的储物间仓库性质一样,区别只是存放的东西不通,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有一个初步了解了。 数据库诞生于 1950年,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 二. 数据库的种类 按照早起的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库,网络式数据库和关系型数据库,而在当今的互联网中,最常见的数据库模型主要是两种,即 关系型数据库和非关系型数据库 三. 关系型数据库 1. 介绍与由来 虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺,用户在对这两种数据库进行存取时,仍然需要明确数据库的存储结构,支出存取路径,而关系型数据库就可以很好的解决这些问题