• 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发生改变。

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

  • 相关阅读:
    bzoj1015题解
    bzoj1013题解
    bzoj1012题解
    bzoj1011题解
    bzoj1010题解
    BZOJ4561: [JLoi2016]圆的异或并 计算几何+treap
    后缀数组 hash求LCP BZOJ 4310: 跳蚤
    prufer BZOJ1211: [HNOI2004]树的计数
    网络流
    BZOJ3160【万径人踪灭】 【FFT】
  • 原文地址:https://www.cnblogs.com/sun7897/p/8663111.html
Copyright © 2020-2023  润新知