redis笔记

文章目录

        • 键值数据库介绍
        • redis介绍
        • redis安装
        • redis数据类型
        • Jedis
        • redis持久化
          • RDB
          • AOF
        • redis主从复制
          • 全量同步
          • 增量同步

键值数据库介绍

键值数据库表中有特定的key和对应的value存储数据,key用来定位value,即检索和存储具体的value,value对数据库而言是透明不可见的,不能对value进行索引和查询,只能通过key来查询。value可以存储任何类型的数据,包括整型、字符型、数组、对象等。在存在大量写操作的情况下,键值数据库可以比关系型数据库取得明显更好的性能。

键值数据库天生具有良好的伸缩性,理论上可以实现数据的无限扩充。

键值数据库可以进一步划分为内存键值数据库和持久化键值数据库,内存键值数据库把数据保存在内存,如redis就是一个典型的内存键值数据库;持久化键值数据库把数据保存在磁盘。

redis介绍

redis是一个key-value数据库,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的互联网公司采用。redis 是一个高性能的key-value数据库。

redis的出现,很大程度补偿了memcached这类key-value数据库在存储上的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

redis支持存储的value类型包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型针对redis的操作都是原子性的。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

redis安装

Linux上的安装

wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
sudo make
cd src
./redis-server
./redis-cli

redis笔记_第1张图片
在这里插入图片描述

redis查询、更改配置项可见:Redis 配置

redis数据类型

redis的键对应的值支持字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets),位图(bitmaps),hyperloglogs等数据类型,各种数据类型对应的命令操作可见:https://www.redis.net.cn/order/,我个人认为这个网址收集的redis命令还是挺全的,里面除了redis操作各种数据类型对应的命令外,还有redis连接命令、redis服务器命令、redis脚本命令、redis事务命令、redis发布订阅命令和redis 地理位置命令。

Jedis

Jedis是redis提供给Java连接redis的一个客户端,我们可以通过Jedis使用Java操作redis,在操作Jedis前,要下载导入Jedis jar包。

Java操作redis的demo可见:【Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池,里面还涉及了一个连接池的操作。为什么要使用连接池呢,我的理解是减少Java和redis建立连接的时间开销,连接池可以实现在客户端建立多个连接并且不释放存储在连接池,当需要使用连接的时候通过一定的算法从连接池里获取已经建立的连接,使用完了以后则还给连接池,这就免去了Java和redis建立连接所占用的时间。

redis持久化

我们知道redis是一个内存键值数据库,为了让redis在再一次启动之后仍然保管有上一次服务启动时的数据,引入了持久化的概念,redis中的持久化就是把内存中的数据同步到磁盘中。redis有两种方式的持久化,一种是RDB方式,一种是AOF方式。

RDB

RDB持久化方式能够在指定的时间间隔能对数据库中的数据进行快照存储,redis默认的持久化方式就是RDB。

AOF

AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据

redis主从复制

redis的主从复制配置可见我的上一篇博客:redis配置最简单的主从复制集群。

这里主要来唠唠redis主从复制过程中的全量同步和增量同步,全量同步和增量同步两者的关系是这样的:redis的主从复制刚刚连接的时候,会先进行全量同步;全量同步结束后,进行增量同步。

全量同步

Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:

  • 从服务器连接主服务器,发送sync命令;
  • 主服务器接收到sync命名后,开始执行bgsave命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  • 主服务器bgsave执行完后,向所有从服务器发送RDB文件,并在发送期间继续记录被执行的写命令;
  • 从服务器收到RDB文件后丢弃所有旧数据,载入收到的RDB;
  • 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  • 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

redis笔记_第2张图片

完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。

增量同步

Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

你可能感兴趣的:(数据库,redis,键值数据库)