NoSQL数据库
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
NoSQL数据库包括: Cassandra、Mongodb、CouchDB、Redis、 Riak、Membase、Neo4j 和 HBase
Redis 持久化之RDB和AOF
Redis介绍
-
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
-
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
-
它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和有序集合(sorted sets)等类型。
Redis数据类型
Redis作为一种高级的key-value存储系统,其键值所支持的数据类型包括5种:string(字符串类型)、hash(哈希类型)、list(列表类型)、set(集合类型)、zset(sorted set有序集合类型)
Redis 与其他 key - value 缓存产品有以下三个特点
-
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
-
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
-
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
-
Redis支持数据的备份,即master-slave模式的数据备份。
使用Redis有哪些好处
-
速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
-
支持丰富数据类型,支持string,list,set,sorted set,hash
-
支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
-
丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
Redis命令
键(key) 命令
- del命令
127.0.0.1:6379> keys *
1) "rank"
2) "count"
3) "sentence"
127.0.0.1:6379> del rank
(integer) 1
127.0.0.1:6379> keys *
1) "count"
2) "sentence"
127.0.0.1:6379>
- exists命令
127.0.0.1:6379> keys *
1) "count"
2) "sentence"
127.0.0.1:6379> exists tt
(integer) 0
127.0.0.1:6379> keys *
1) "count"
2) "sentence"
127.0.0.1:6379> set tt 'I would have to learn,little by little,to exist alone.'
OK
127.0.0.1:6379> exists tt
(integer) 1
127.0.0.1:6379> get tt
"I would have to learn,little by little,to exist alone."
- ttl和expire命令
127.0.0.1:6379> keys *
1) "sentence"
2) "tt"
3) "count"
127.0.0.1:6379> ttl sentence
(integer) -1
127.0.0.1:6379> expire sentence 15
(integer) 1
127.0.0.1:6379> ttl sentence
(integer) 9
127.0.0.1:6379> ttl sentence
(integer) -2
127.0.0.1:6379> keys *
1) "tt"
2) "count"
- persist命令
127.0.0.1:6379> keys *
1) "tt"
2) "count"
127.0.0.1:6379> expire count 80
(integer) 1
127.0.0.1:6379> ttl count
(integer) 75
127.0.0.1:6379> ttl count
(integer) 68
127.0.0.1:6379> persist count
(integer) 1
127.0.0.1:6379> ttl count
(integer) -1
127.0.0.1:6379> get count
"12"
127.0.0.1:6379> keys *
1) "tt"
2) "count"
- rename命令
127.0.0.1:6379> keys *
1) "tt"
2) "count"
127.0.0.1:6379> get tt
"I would have to learn,little by little,to exist alone."
127.0.0.1:6379> rename tt study
OK
127.0.0.1:6379> get study
"I would have to learn,little by little,to exist alone."
127.0.0.1:6379> keys *
1) "study"
2) "count"
字符串(String) 命令
- set命令、get命令
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set sentence "Billi Holiday`s reputation as a great jazz-blues singer rests on her ability to give emotional depth to her songs."
OK
127.0.0.1:6379> get sentence
"Billi Holiday`s reputation as a great jazz-blues singer rests on her ability to give emotional depth to her songs."
- incr命令
127.0.0.1:6379> set count 10
OK
127.0.0.1:6379> incr count
(integer) 11
127.0.0.1:6379> incr count
(integer) 12
127.0.0.1:6379> get count
"12"
- incrby命令
127.0.0.1:6379> set rank 30
OK
127.0.0.1:6379> incrby rank 30
(integer) 60
127.0.0.1:6379> get rank
"60"
哈希(Hash) 命令
- hset、hget命令
127.0.0.1:6379> keys *
1) "study"
2) "count"
127.0.0.1:6379> hset myhash weather beautiful
(integer) 1
127.0.0.1:6379> hget myhash weather
"beautiful"
127.0.0.1:6379> hset myhash site www.baidu.com
(integer) 1
127.0.0.1:6379> hget myhash site
"www.baidu.com"
127.0.0.1:6379> keys *
1) "study"
2) "myhash"
3) "count"
127.0.0.1:6379>
- hkeys命令
127.0.0.1:6379> keys *
1) "study"
2) "myhash"
3) "count"
127.0.0.1:6379> hkeys myhash
1) "weather"
2) "site"
- hexists和hdel命令
127.0.0.1:6379> hkeys myhash
1) "weather"
2) "site"
127.0.0.1:6379> hexists myhash site
(integer) 1
127.0.0.1:6379> hexists myhash tt
(integer) 0
127.0.0.1:6379> hdel myhash site
(integer) 1
127.0.0.1:6379> hexists myhash site
(integer) 0
127.0.0.1:6379> hkeys myhash
1) "weather"
127.0.0.1:6379>
- hmset和hmget命令(批量)
127.0.0.1:6379> hmset hellohash k1 "nihao" k2 "happy" k3 "rich"
OK
127.0.0.1:6379> hmget hellohash k1 k2 k3
1) "nihao"
2) "happy"
3) "rich"
127.0.0.1:6379> hkeys hellohash
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379>
- hlen命令
127.0.0.1:6379> hkeys hellohash
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379> hlen hellohash
(integer) 3
127.0.0.1:6379>
图片