Redis的介绍

1.1 什么是 NoSql

  为了解决高并发、高可扩展(集群)、高可用(不能宕机)、大数据存储问题而产生的数据库解决方案,就是 NoSql 数据库。

  NoSql : 全称 not only sql ,非关系型数据库。可以作为关系型数据库的一个很好的补充。不能替代。

1.2 NoSql 数据库分类

  ┣▶键值(Key-Value)存储数据库

    相关产品:Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB。

    典型应用:内容缓存,主要用于处理大量数据的高访问负载。

    数据模型:一系列键值对

    优势:快速查询

    劣势:存储的数据缺少结构化

  ┣▶列存储数据库

    相关产品:Cassandra,HBase,Riak

    典型应用:分布式的文件系统

    数据模型:以列簇式存储,将同一列数据存在一起

    优势:查找速度快,可扩展性强,更容易进行分布式扩展

    劣势:功能相对局限

  ┣▶文档型数据库

    相关产品:CouchDB、MongoDB

    典型应用:Web应用

    数据模型:一系列键值对(与Key-Value类似,但Value是结构化的)

    优势:数据结构要求不高

    劣势:查询性能不高,而且缺乏统一的查询语法

  ┣▶图形(Graph)数据库

    相关产品:Neo4J、InfoGrid、Infinite Graph

    典型应用:社交网络

    数据模型:图结构

    优势:利用图结构相关算法。

    劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

1.3 什么是 redis

  Redis 是用 C 语言开发的一个开源的高性能键值对(Key-Value)数据库(NoSql),应用在缓存。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis支持的键值数据类型有5种。String、Hash、List、Set、SortedSet。

1.4 redis 的五种数据类型

  首先,① redis 中的数据都是字符串。② redis是单线程的,不适合存储比较大的数据(因为先进先出,大的数据占位子,哈哈哈哈哈)

  ◤ String: Key-Value

    字符串类型

    redis 命令不区分大小写,但是 key 是区分的

    使用 incr 命令,如果 key 不存在。会自动创建 key 并自动+1。

    ① set key value  设置值

    ② get key  获取值

    ③ incry key  加一

    ④ decr key  减一

    

  ◤Hash:Key-Field-Value

    散列类型

    相当于一个 key 对应一个map (map 中又是 key-value(field-value))

    应用于归类

    ① hset  key field value  设置值

    ② hget  key field  获取值

    ③ hincrby  key field num  设置增数量(负数就减咯)

    

  ◤List

    列表类型

    List 是有顺序可重复(数据结构中的:双链表,队列)

    可作为链表,从左添加元素,也可以从右添加元素。

    ① lpush  list a b c d  从左添加元素

    ② rpush  list 1 2 3 4  从右添加元素

    ③ lrange  list 0 -1  从 0 到 -1 元素查看:也就表示查看所有

    ④ lpop  list   从左边取,删除

    ⑤ rpop  list   从右边取,删除

    

  ◤Set

    集合类型

    无序,不可重复

    ① sadd  set1 a b c d d  向 set1  中添加元素(元素不重复)

    ② smembers set1  查询元素

    ③ srem set1 a  删除元素

    

  ◤SortedSet(zSet)

    有序集合类型

    有序,不能重复

    适合做排行榜 排序需要一个分数属性

    ① zadd zset1 9 a 8 c 10 d 1 e   (添加元素 zadd key score member

    ② ZRANGE key start stop [WITHSCORES] (查看所有元素:zrange key  0  -1  withscores:如果要查看分数,加上withscores

    ③ zrange zset1 0 -1 (分数从小到大排列)

    ④ zrevrange zset1 0 -1 (从大到小)

    ⑤ zincrby zset2 score member (对元素member 增加 score)

1.5 redis 的应用场景

    缓存。

    分布式集群架构中的session分离。  session默认的时候半个小时,可以把 redis 的时效也设为半个小时。key-->userid  value -->user

    任务队列。(秒杀、抢购、12306等等)

    应用排行榜。(SortedSet)

    网站访问统计。

    数据过期处理。(expire)

1.6 key 命令

  ① expire key second   设置 key 的过期时间  0 - key不存在  1 - 设置成功

  ② ttl key   查看剩余时间   -2 - 表示不存在, -1 - 表示已被持久化, 正数表示剩余时间

  ③ persist key  清除过期时间,即持久化。 持久化成功提示1,不成功0。

  ④ del key   删除 key 。

  ⑤ exists key   key存在返回1,否则返回0 。

  ⑥ select 0   选择0号数据库。默认是0号数据库。

1.6 redis 持久化方案

  Redis 数据都放在内存中。如果机器挂掉,内存的数据就不存在。

  需要做持久化,将内存中的数据保存在磁盘,下一次启动的时候就可以恢复数据到内存中。

  1. RDB   快照形式  默认(定期将当前时刻的数据保存磁盘中)会产生一个dump.rdb文件

    持久化依据:多长时间多少个key发生改变。

    特点:会存在数据丢失,性能较好,用于数据备份。

  2.AOF   append only file  (所有对redis的操作命令记录在.aof文件中),恢复数据,重新执行一遍即可。

    持久化依据:多长时间 或者 多少个key发生改变。

    特点:每秒保存,数据完整性比较好,耗费性能。

原文地址:https://www.cnblogs.com/sun7897/p/8663111.html