NOSOL之Redis初了解
NOSQL
Not Only SQL,泛指非关系型数据库。在Web 2.0时代,为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题而产生。
四大分类:
- 键值(Key-Value)存储数据库,通常用哈希表来实现,如Redis,Oracle BDB。
- 列储存数据库,以列簇式存储,如HBase。
- 文档型数据库,同第一种键值存储相类似,如MongDB。
- 图形数据库,图结构存储,如Neo4J,Infinite Graph。
为什么产生NOSQL?
在Web 2.0时代,关系型数据库因其扩展困难,读写慢,成本高,有限的支撑容量等限制,难以满足这个云计算时代的需求,因此具有简单扩展,快速读写,低廉成本等优点的NOSQL应运而生。
然而需要注意的是,不是任何场景都适用NOSQL,以下场景才适合使用NOSQL: 1.数据库表schema经常变化(比如在线商城,维护产品的属性经常要增加字段)。 2.数据库表字段是复杂数据类型。 3.高并发数据库请求。 4.海量数据的分布式存储。
Redis
- 什么是Redis
Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
- 它的优势是什么
1.性能高。
2.丰富的数据类型,有String,List,Hash,Set和Sorted Set的命令操作。
3.原子性,意思就是要么成功执行要么失败完全不执行。
4.丰富的特性。 连接命令
1
2
3$ redis-cli -h host -p port -a password (连接)
redis 127.0.0.1:6379> PING (查看连接)
redis 127.0.0.1:6379> QUIT (关闭连接)键命令
1
redis 127.0.0.1:6379> COMMAND KEY_NAME
String命令
1
redis 127.0.0.1:6379> COMMAND KEY_NAME
设置命令
1
2
3
4
5
6
7
8Key:
redis 127.0.0.1:6379> SET KEY_NAME FIELD VALUE
String:
redis 127.0.0.1:6379> SET KEY_NAME FIELD VALUE
Hash:
redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE
List:
redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE添加/插入命令
1
2
3
4
5
6List:
redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN
Set:
redis 127.0.0.1:6379> SADD KEY_NAME VALUE1..VALUEN
Sorted Set:
redis 127.0.0.1:6379> ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN获取/返回命令
1
2
3
4
5
6
7
8
9
10String:
redis 127.0.0.1:6379> GET KEY_NAME
Hash:
redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME
List:
redis 127.0.0.1:6379> LRANGE KEY_NAME START END
Set:
redis 127.0.0.1:6379> SMEMBERS key
Sorted Set:
redis 127.0.0.1:6379> ZRANGE key start stop [WITHSCORES]删除命令
1
2
3
4
5
6
7
8
9
10
11key:
redis 127.0.0.1:6379> DEL KEY_NAME
Hash:
redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN
List:
redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT
redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT
Set:
redis 127.0.0.1:6379> SREM KEY MEMBER1..MEMBERN
Sorted Set:
redis 127.0.0.1:6379> ZREM key member [member ...]
Redis事务
Redis事务一次可执行多个命令。
1
2
3
4
5
6
7 redis 127.0.0.1:6379> MULTI
OK (事务开始)
···
命令
···
redis 127.0.0.1:6379> EXEC (触发事务)
(redis 127.0.0.1:6379> DISCARD 取消事务)
Redis HyperLogLog
做基数统计的算法,用PFADD添加元素,再用PFCOUNT惊醒基数估算。
数据备份与恢复
1 | redis 127.0.0.1:6379> SAVE (创建当前数据库备份) |