从零开始---初始redis

1.  redis基础

  1.1. 定义

    redis是一个开源的、使用C语言编写的、支持网络交互的、基于内存可持久化的高性能key-value型NoSQL数据库

  1.2. 数据类型

    •     String                     字符串 整数 浮点数
    •     Hash                      包含键值对的无序散列表
    •     List                         一个链表,链表上的每个节点都包含了一个字符串
    •     Set                         包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同
    •     SortedSet(Zset)字符串成员,与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定。

  1.3.官方下载地址

     https://redis.io/

2.redis实现

  2.1 简单安装

     通过官方地址下载压缩包

     tar xzf redis压缩包

     mv 到存储位置

     make 进行安装

   2.2 启动实例

     2.2.1 默认启动

       进入redis目录的src文件夹

       ./redis-server 会使用默认配置 

     2.2.2 根据配置文件启动     

      //是否后台启动
      daemonize no/yes
      //默认端口
      port 6379
      //AOF开关
      appendonly no/yes
      //日志位置
      logfile /var/log/redis.log
      //RDB持久化数据文件
      logfile /var/log/redis.log      //启动      ./redis-server /etc/redis/redis.conf

3.redis持久化

  3.1 AOF(Append Only File)

    3.1.1 定义

      它的出现是为了弥补RDB的不足(数据不一致),采用了日志的形式记录每个写操作,并追加到文件中。Redis重启的会根据日志文件的内容通过写指令从前到后执行一次完成数据的恢复工作。

    3.1.2 更新日志条件

      always:同步持久化,每次发生数据变化会立刻写入到磁盘中。

      everysec:出厂默认推荐,每秒记录一次(默认值)

      no: 不同步

    3.1.3 AOF的重写机制

      AOF是会不断地命令追加到文件的末尾,所以随着写入命令的不断增加,AOF的体积也会变得越来越大,执行BGREWRITEOF命令,Redis将生产一个新的AOF文件,这个文件包含重建当前数据集所需最少命令。

    3.1.4 优缺点

      优点:数据的完整性和一致性

      缺点:AOF的内容变多,文件会越来越大,数据恢复也会越来越慢

    3.1.5 操作    

      第一步:修改配置文件,开启AOF持久化配置

      第二步:重启Redis服务,并进入Redis自带的客户端

      第三步:保存值,然后模拟数据丢失,关闭Redis服务

      第四步:重启服务,发现数据恢复了

      第五步:修改appendonly.aof,模拟文件异常情况

      第六步:重启Redis服务失败。这同时也说明了,RDB和AOF可以同时存在,且优先加载AOF文件

      第七步:校验appendonly.aof文件。重启Redis服务后正常

  3.2 RDB(Redis DataBase)

    3.2.1 定义

      Redis默认的持久化方案,在指定的时间间隔内,执行制定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis重启会通过加载dump.rdb文件恢复程序

    3.2.2 优缺点

      优点:1 适合大规模的数据恢复

         2 如果业务对数据完整性和一致性不高,RDB是很好的选择

      缺点:1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机

         2 备份时占用内存,因为Redis在备份时会独立创建一个子进程,将数据写入到一个临时文件(原来的数据的两倍),最后再将临时文件替换之前的备份文件。

    3.2.3 操作

      第一步:vim修改持久化配置时间,120秒内修改5次则持久化一次

      第二步:重启服务配置生效

      第三步:分别set5个key,过两分钟后,在bin的当前目录下会自动生产一个dump.rdb文件。

      第四步:将当前的dump.rdb备份一份(模拟线上工作)

      第五步:执行FLUSHALL命令清空数据库数据

      第六步:重启Redis服务,恢复数据,数据不见了,因为FLUSHALL也有触发RDB快照功能

      第七步:将备份的dump_bk.rdb替换dump.rdb然后重启redis

4.问题收集

  Redis是单进程单线程的

   redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销

        Redis的回收策略

        volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

        volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

        volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

        allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

        allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

        no-enviction(驱逐):禁止驱逐数据

         redis相比memcached有哪些优势?

  1. memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
  2. redis的速度比memcached快很多
  3. redis可以持久化其数据

原文地址:https://www.cnblogs.com/shaoxiaosa/p/7700187.html

时间: 2024-10-25 16:19:54

从零开始---初始redis的相关文章

【Redis篇】初始Redis与Redis安装

一.前述 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string.list.set.zset和hash.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作.在此基础上,Redis支持各种不同方式的排序. 和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无

初始Redis分布式锁

在分布式应用中经常出现并发的问题,比如对用户的状态做一个修改 ,那么就涉及到先取出数据再进行修改,但是这样常常会引发问题,因为读和写是两个操作,不是原子性(不可分割的)的操作.当同时进行该操作时往往会引发并发问题. 这时就要用到分布式锁. 在Reids中的分布式锁实际上就相当于一个占坑,当坑上有人的时候别人必须再外面等待,同时只允许一个人占坑.而在Redis中提供了一个setnx的指令来对key进行加锁: setnx mylock true ...do something... //做一些业务逻

从零开始写redis客户端(deerlet-redis-client)之路——第一个纠结很久的问题,restore引发的血案

http://www.midifan.com/moduleuser-index-424021.htmhttp://www.midifan.com/moduleuser-index-424072.htmhttp://www.midifan.com/moduleuser-index-424044.htmhttp://www.midifan.com/moduleuser-index-423959.htmhttp://www.midifan.com/moduleuser-index-423964.htm

Get start with "Redis" —— by “EOF”

Get start with "Redis" 怎么安装Redis的  tutorial一堆~我不重复了,仅仅留下自己开始玩Redis的经验(LZ 数据库零经验,So...一切从零开始学Redis) 在shell下触发redis-server就启动Redis了. 我一开始傻乎乎的~好郁闷,都没有交互,我怎么用Redis啊? Answer:客户端 启动Redis 服务之后就可以用redis-cli测试客户端进行测试了! 打开另外一个terminal. demo 了怎么使用set get 进

REDIS的几个测试结果

场景一:对单一键大并发量增加(INC)操作,模拟对热点产品的库存修改 测试点:   原子性,保证最后的键值等于所有键值增加操作的总和性能,   保证在大并发量下写操作的性能没有大的降低 线程数 100次INC操作的平均时间 服务端数据 10 140 instantaneous_ops_per_sec(每秒处理指令数):342instantaneous_input_kbps(每秒读字节数):10.70instantaneous_output_kbps(每秒写字节数):1.90used_cpu_sy

redis 命令的调用过程

参考文献: Redis 是如何处理命令的(客户端) 我是如何通过添加一条命令学习redis源码的 从零开始写redis客户端(deerlet-redis-client)之路--第一个纠结很久的问题,restore引发的血案 redis命令执行流程分析 通信协议(protocol) Redis主从复制原理 Redis配置文件详解 当用户在redis客户端键入一个命令的时候,客户端会将这个命令发送到服务端.服务端会完成一系列的操作.一个redis命令在服务端大体经历了以下的几个阶段: 读取命令请求

从零开始搭建系统1.5——Redis安装及配置

从零开始搭建系统1.5--Redis安装及配置 原文地址:https://www.cnblogs.com/provence666/p/8638528.html

从零开始——Ubuntu系统安装redis和phpredis

在我们部署redis之前,先了解下redis到底是个啥东西. redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的 是redis

【Redis篇】Redis集群安装与初始

一.前述 本文将单台节点不同端口模拟集群方式. 二.具体搭建 前提是安装好redis具体可参考http://www.cnblogs.com/LHWorldBlog/p/8463269.html 1.规划 redis集群 3.x版本物理节点1个指定3个主节点端口为7000.7001.7002对应的3个从节点端口为7003.7004.7005 2.创建配置 mkdir cluster-testcd cluster-testmkdir 7000 7001 7002 7003 7004 7005在700