• Redis小白入门系列


    一、从NoSQL说起

    NoSQL 是 Not only SQL 的缩写,大意为"不只是SQL",说明这项技术是传统关系型数据库的补充而非替代。在整个NoSQL技术栈中 MemCache、Redis、MongoDB被称为NoSQL的三剑客。那么时代为什么要NoSQL数据库呢?我们来做个对比:

    关系型数据库 NoSQL数据库
    数据库存储位置 硬盘 内存
    数据结构 高度组织化结构数据 没有预定义的模式
    数据操作方式 SQL 所有数据都是键值对,没有声明性查询语言
    事务控制 严格的基础事务ACID原则 CAP定理

    所以NoSQL数据库的最大优势体现为:高性能、高可用性和可伸缩性


    二、Redis(remote dictionary server)简介

    Redis英文介绍:

    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

    Redis中文介绍:

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
    通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。


    三、Redis安装

    1、下载安装

    wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    tar xzf redis-5.0.5.tar.gz
    cd redis-5.0.5
    make
    

    然后到src目录下运行redis-server
    运行结果如下

    执行后连接

    发送一个ping会返回一个pong


    四、Redis常用数据结构

    1、总体结构

    key value
    string
    list
    set
    hash
    zset

    Redis中的数据,总体上是键值对,不同数据类型指的是键值对中值的类型。

    2、string类型

    Redis中最基本的类型,它是key对应的一个单一制。二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis的string可以包含任何数据,比如jpg图片或者序列化对象。Redis中一个字符串值的最大容量是512M

    3、List类型

    Redis 列表是最简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部或者尾部。说明它的底层是基于链表实现的,所以它操作头尾效率高,中间效率低。

    4、set类型

    Redis内set是string类的无序集合,它是基于哈希表实现的。

    5、hash类型

    本身就是一个键值对集合。可以当作Java中的Map<String,Map<key,value>>对待

    6、zset

    zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。Zset的成员是唯一的,分数可以重复。


    五、Redis命令

    1.基本操作

    1.切换数据库

    redis默认有16个数据库
    使用select进行切换,数据库索引从0开始

    2.查看数据库

    2.KEY操作

    KEYS PATTERN 匹配字符

    TYPE KEY 返回KEY对应的值的类型

    MOVE KEY DB 把一组键值数据库移动到另一个数据库

    DEL KEY [KEY...] 指定至少一个Key然后删除

    其他命令如下

    命令 用途
    EXISTS KEY 检查指定的KEY是否存在。指定一个KEY时,存在返回1,不存在返回0.可以指定多数量
    RANDOMKEY 在现有的KEY中随机返回一个
    RENAME KEY NEW KEY 只有在NEWKEY不存在时执行成功,否则失败
    TIME 返回UNIX时间戳
    TTL KEY 以秒为单位查看KEY还能存在多久
    EXPIRE KEY SECONDS 给一个KEY设置在SECONDS秒后过期,过期会被Redis移除
    PTTL KEY 毫秒看存在多久
    PERSIST KEY 移除过期时间,变成永久KEY

    3、String等其他操作请转至菜鸟教程这里不做赘述

    https://www.runoob.com/redis/redis-strings.html


    六、Redis持久化机制

    Redis工作时数据都存储在内存中,万一服务器断电,则所有数据都会丢失,针对这种情况,Redis采用持久化机制来增强数据安全性。

    1、RDB

    (1)机制描述

    每隔一定时间把内存中的数据作为一个快照保存到硬盘上的文件中,Redis默认开启RDB机制。

    (2)触发时机

    【1】基于默认配置

    save 900 1
    save 300 10
    save 60 10000
    

    含义

    配置 含义
    save 900 1 900秒内至少有一次修改则出发保存操作
    save 300 10 300秒内至少有10次修改保存操作
    save 60 10000 60秒内至少有10000次修改保存操作

    【2】使用保存命令

    save
    bgsave
    

    【3】使用flushall命令

    全部清空
    

    【4】服务器关闭

    如果执行shutdown命令让Redis正常退出,那么Redis就会执行一次持久化保存。
    

    (3)相关配置

    配置项 取值 作用
    save "" 禁用RDB机制
    dbfilename 文件名,例如:dump.rdb 设置RDB机制下,数据存储文件的文件名
    dir Redis工作目录路径 指定存放持久化文件的目录的路径。注意:这里指定的必须是目录不能是文件名

    2、AOF

    (1)机制描述

    根据配置文件中指定的策略,把生成数据的命令保存到硬盘上的文件中。

    (2)AOF基本配置

    配置项 取值 作用
    appendonly yes 启用AOF持久化机制
    no 禁用AOF持久化机制[默认值]
    appendfilename "文件名" AOF持久化文件名
    dir Redis工作目录路径 指定存放持久化文件的目录的路径。注意:这里指定的必须时目录不能说文件名
    appendfsync always 每一次数据修改后都将执行文件写入操作,缓慢但是最安全
    everysec 每秒执行一次写入操作,折中。
    no 由操作系统在适当时候执行写入操作,最快

    (3) AOF重写

    对比下面俩组命令

    AOF重写前 AOF重写后
    set count 1 set count4
  • 相关阅读:
    ffplay 一些好玩的filter
    ffmpeg加文字水印并控制水印显示时间或显示周期
    学习笔记之redux
    vue的一些常识代码规范(小小总结)
    使用computed和watch实现子组件监听父组件的变量变化
    vuex实现状态管理的具体操作
    scss使用总结
    vue的key值引发渲染错位的血案
    mp-vue实现小程序回顶操作踩坑,wx.pageScrollTo使用无效填坑
    git 的一些指令 (遇到再补充)
  • 原文地址:https://www.cnblogs.com/godoforange/p/11537512.html
Copyright © 2020-2023  润新知