淘先锋技术网

首页 1 2 3 4 5 6 7

redis

Redis是一个基于内存的Key-Value非关系型数据库,由C语言进行编写。

Redis速度快的原因:基于内存、单线程、支持多路复用。

NOSQL概念

NOSQL(Not only sql):不仅是sql语句, 它是对所有非关系型数据库的一种统称。 除去关系型数据库之外的都是非关系数据库。

NOSQL和RDBMS的区别

RDBMS
- -高度组织化结构化数据。 user---userid username age sex .....
- -结构化查询语言(SQL) sql语句
- -数据和关系都存储在单独的表中。
- -数据操纵语言DML,数据定义语言DDL
- -严格的一致性. 事务
- -基于事务
 NoSQL
- -代表着不仅仅是SQL
- -没有声明性查询语言
- -键 - 值对存储。
- -最终一致性,而非ACID事务【原子,一致,隔离,持久】属性
- -非结构化和不可预知的数据  字符串  对象  队列  集合
- -高性能,高可用性和可伸缩性。 适合搭建集群。  mysql搭建集群。非常复杂。主从模式。

Nosql并不是用来替换RDBMS的。

常见的NOSQL数据库类型

redis是属于非关系数据库

Redis作为一个高性能的key-value数据库具有以下特征:

        多样的数据模型
        持久化
        主从同步  

     Redis支持丰富的数据类型,最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis通常将数据存储于内存中,或被配置为使用虚拟内存。Redis有一个很重要的特点就是它可以实现持久化数据,通过两种方式可以实现数据持久化:使用RDB快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的AOF日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。 Redis支持将数据同步到多台从数据库上,这种特性对提高读取性能非常有益。

Mongodb属于非关系数据库

非关系型数据库,属于文档型数据库。先解释一下文档的数据库,既可以春芳xml,json,bson类型系的那个数据。这些数据具备自述性,呈现分成的数据结构。数据结构由键值(key=》value)对组成。

存储方式:虚拟内存加持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:时间的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优势:

  • 快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快,

  • 高扩展!

  • 自身的Failover机制!

  • json的存储格式!

缺点:主要是无事物机制!

redis的常用命令

key的命令

keys *: 查询所有的key;
del key....:删除指定的key
expire key seconds: 为指定的key设置过期时间单位为秒
ttl key: 查询指定key的存活时间

对数据库的操作命令

flushdb: 清空当前数据库中的数据。
select index: 选择数据库
flushall: 清空所有数据库中的数据。

redis支持的数据类型

1. String字符串类型
2. Hash 哈希类型
3. list 队列
4. set 集合
5. sorted set 有序集合。

String字符串类型--value值为字符串类型

set key value: 把字符串的value存放到对应的key上。
get key: 根据指定的key获取对应字符串的value
mset key value key value key value....: 一次存放多个字符串的value到相应的key上
mget key key...: 根据指定的多个key获取对应的字符串的value
setnx key value: 把指定的value存放到对应的key上,如果对应的key已经存在,则不存储。
如果不存在则存储。 返回0或者1
incr key: 为指定的key的value值进行递增。应用场景:点赞 收餐  转发等
decr key: 递减

Hash 类型

hset key field value: 存放一个指定key的field-value的数据库
hget key field:获取指定key的field字段对应的value值。
hkeys key: 获取指定key的所有field字段名
hvals key: 获取指定key的所有value值。
hgetall key: 获取指定key的所有的field和value值。
HDEL key field: 删除指定key的field字段。