nosql不仅仅是sql,它是not only sql 的缩写,也是众多非关系型数据库的统称nosql和关系型数据库一样,也是用来存储数据的仓库。
随着互联网的高速发展,数据量、访问量呈爆发式式增长。比如12306中国铁路票务系统。
一年售出车票有30多亿张;
网上售票比例超过了80%;
互联网高峰日售出车票达到了1282多万张;
高峰时每秒售票超出1000张;
网站高峰日访问量超过了1600亿次……
12306售票系统
已成为全球最大的票务交易系统
中国人民彻夜排队买票已成为历史
这么多的数据都是需要存储的,然而传统的关系型数据库面对这些海量数据的存储,以及实现高访问量、高并发读/写,就会显的力不从心,尤其是当面对超大规模、高并发、高吞吐量的大型动态网站的时候,就会暴露出很多难以克服的问题,影响用户体验。为了满足对海量数据的高速存储需求,实现高并发、高吞吐量,nosql应运而生。nosql的出现可以解决传统关系型数据库所不能解决的问题。
2008年,意大利的一家创业公司merzia推出了一款基于mysql的网站实时统计系统lloogg,没多久该公司的创始人sanfilippo对mysql的性能感到失望,于是他决定亲自为lloogg量身定做一个数据库,并于2009年开发完成,这个数据库就是redis。
redis(全称:remote dictionary server 远程字典服务)是一个开源的、使用c语言编写、支持网络、可基于内存亦可持久化的key-value数据库,并提供多种语言的api。
redis能读的速度是110000次/s,写的速度是81000次/s 。
下载地址:https://github.com/msopentech/redis/releases。
redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 redis-x64-xxx.zip解压后,将文件夹重新命名为 redis。
打开文件夹,内容如下:
双击redis-server.exe,启动服务端,输入之后,会显示如下界面:
这时候启动一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
切换到 redis 目录下运行:
redis-cli.exe -h 127.0.0.1 -p 6379
下载地址:,下载最新稳定版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
$ cd src $ ./redis-server
注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
$ cd src $ ./redis-server ../redis.conf
redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
$ cd src $ ./redis-cli redis> set foo bar ok redis> get foo "bar"
在 ubuntu 系统安装 redis 可以使用以下命令:
$sudo apt-get update $sudo apt-get install redis-server
启动 redis
$ redis-server
查看 redis 是否启动?
$ redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 ip ,6379 是 redis 服务端口。现在我们输入 ping 命令。
redis 127.0.0.1:6379> ping pong
以上说明我们已经成功安装了redis。
字符串类型是redis中最为基础的数据存储类型。在redis中字符串类型的value最多可以容纳的数据长度是512m。
del key:删除指定的key
hash类型可以看出具有string key 和string value 的map容器。所以该类型非常适合于存储值为对象的信息。如username、password和age等。每一个hash可以存储4294967295个键值对
其他
list类型是按照插入顺序排序的双向链表。从元素插入和删除的效率视角来看,如果我们在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了大量的数据,该操作也可以在常量时间内完成。
set类型为没有排序的字符集合。set集合中不允许出现重复的元素。set类型在功能上还存在一个非常重要的特性,即集合的聚合操作效率极高。
有序集合和set类型即为相似,都不允许重复的成员出现在一个set中。它们之间的主要差别是有序集合中的每一个成员都会有一个score与之关联,通过score来为集合中的成员进行从小到大的排序。
一个redis实例最多可提供16个数据库,下标从0到15,客户端默认连接第0号。
redis作为nosql数据库也提供了事务机制。
特点:
redis的高性能是由于其将所有的数据都存储在了内存中,为了使redis在重启之后仍能保证不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。
redis支持两种方式的持久化,一种是rdb方式,一种是aof方式。可以单独使用,也可以结合使用。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
MongoDB中数据的替换方法实现类Replace()函数功能详解
理解Redis持久化,RDB持久化和AOF持久化的不同处理方式
网友评论