redis数据库

redis有以下三个特点

  • redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • redis支持数据的备份,即master-slave模式的数据备份
  • 数据提供原子性操作

redis安装与配置

redis数据类型

string(字符串),hash(哈希),list(列表),set(集合)及zset(sort set:有序集合)

  • redis 键(key)

    • del key 删除存在的key
    • exists key 检查给定的key是否存在
    • keys pattern 正则匹配key名称
    • expire key 为给定的key设置过期时间,以秒计
    • ttl key 查看key的剩余生存时间/秒(TTL time to live)
    • rename key newkey 修改key的名称
    • type key 放回key所存储的值类型
  • String(字符串)

    • 设置

      • set key value 设置指定key的值
      • mset key value[key value] 同时设置一个或多个key-value对
      • setex key seconds value 将值key关联到key,并将key的过期时间设置为 seconds 秒
      • setns key value 只有在key不存在时设置key的值
      • append key value 如果已经存在并且是一个字符串,该命令将指定的value追加到该key原来值(value)的末尾
    • 获取
      • get key 获取指定key的值
      • mget key1 [key2...] 获取所有(一个或多个)给定key的值
      • strlen key 放回key所存储的字符串值得长度
  • hash(哈希)

    redis hash 是一个string类型的field和value的映射表,hash特别适合用用于存储对象 redis中每个hash可以存储 2^32 - 1 键值对(40多亿)

    • 判断

      • hexists key field 查看哈希表key中,指定的字段是否存在
    • 获取
      • hkeys key 获取哈希表中的所有值
      • hlen key 获取哈希表中字段的数量
      • hget key field 获取存储在哈希表中指定字段的值
      • hmget key field1 [field2] 获取所有给定字段的值
      • hgetall key 获取在哈希表中指定key的所有字段和值
      • hvals key 获取哈希表中所有值
    • 设置
      • hset key field value 将哈希表key中的字段field的值设置为value
      • hmset key field1 value1 [field2 value2] 同时将多个field-value(域-值)对设置到哈希表key中
    • 删除
      • hdel key field1 [field2...] 删除一个或多个哈希表字段
  • 列表(list)

    redis列表是简单的字符串类表,按照插入顺序排序。可以添加一个元素到类表的头部(左边)或尾部(右边) 一个类表最多可以包含 2^32 -1个元素

    • 插入

      • lpush key value1 [value2...] 将一个或多个值插入到列表头部
      • rpush key value1 [value2...] 在列表中添加一个或多个值
      • linset key before/after pivot value 在列表元素前或后插入元素(pivot指定列表中的元素,value准备插入的元素)
    • 获取

      • lrange key start stop 获取列表指定范围内的元素(-1为最后一个)
      • lindex key index 通过索引获取列表中的元素
      • llen key 获取列表长度
      • lpop key 移出并获取列表的第一个元素
    • 修改
      • lset key index value 通过索引设置列表元素的值
    • 删除

      • lrem key count value 通过索引设置列表元素的值

      count>0:从头往尾移除 count=0:从尾往头移除 count<0:移除所有

  • 列表和集合的区别

    1. list提供索引方式添加元素或获取元素,set不提供
    2. list集合是有序存储,set集合时无序存储(存储地址的有序、无序)
    3. list 可以存储重复的值,set不可以存储重复的值
    4. 在随机遍历中,set是根据hash值得大小遍历,呈现出的值是有序
  • set(集合)

    集合成员是唯一的

    • 添加

      • sadd key member1 [member2..]
    • 获取
      • scard key 获取集合的成员数
      • smembers key 返回集合中的所有成员
    • 删除
      • srem key member1 [member2...]
  • zset (有序集合)

    每一个元素都会关联一个double类型的score(权重)

    • 添加

      • zadd key score1 member1 [score2 member2...] 向有序集合添加一个或多个成员,或者更新已存在成员的score
    • 获取
      • zcard key 获取有序集合的成员数
      • zrange key start stop 通过索引区间返回有序集合指定区间内的成员
      • zrangebyscore key mix max 通过分数返回有序集合指定区间内的成员
      • zscore key member 返回成员member的权重
    • 删除
      • zrem key member1 [member2..] 删除指定元素
      • zremrangebyscore key min max 删除权重在指定范围的元素

redis主从配置

  • 主配置

    • 修改etc/redis/redis.conf 中的 bind:主ip
  • 从配置

    1. 复制主配置中的redis.conf文件 ===》 重命名 slave.conf
    2. 修改文件中的 bind:从ip
    3. slaveof:主ip:主端口 ===》主从备份
    4. port 从端口
  • 查看主从关系

    • redis-cli -h ip -p port info Replication
  • 进入主从客户端

    • redis-cli -h ip -p port
  • 主从配置应用

    • 可以通过主配置添加修改内容,从配置读取内容(负载均衡)

redis集群

一组相互独立的,通过高速网络互联的计算机,它们构成一个组,并以单一系统的模式加以管理

1. redis集群采用叫哈希槽的方式分配数据,redis cluster默认分配到16384个stost,当写入数据:内部会自动匹配到对应的槽
2.redis集群会把数据存到一个master节点,然后在这个master和其对应的salve之间进行数据同步
3.必须要3个或3个以上节点才能创建集群
  • 软件层面

    • 只有一台主机,在这台电脑上启动多个redis服务
  • 硬件层面

    • 存在多台主机,每台主机上启动一个或多个redis服务
  • 集群节点配置

    • 在/etc/redis 下创建 7000.conf

    7000.conf文件中配置信息

    1. port 7000
    2. bind ip
    3. dammonize yes
    4. pidfile 7000.pid
    5. cluster-enabled yes
    6. cluster-config-file 70000_node.conf
    7. cluster-node-timeout 15000
    8. apendonly yes
    • 其他主机创建 70001.conf ,配置同上,修改对应的内容
    • 启动服务
      • sudo redis-sever ./7000.conf
    • 查看集群
      • ps aux | grep redis

        • 看到关键字:cluster(集群)
  • 安装环境依赖

    • 安装ruby环境

      • sudo apt-get install ruby
    • 创建集群
      • redis-trib.rb create --replicas 1 ip1:port1 ip2:port2 ...
    • 连接集群
      • redis-cli -h ip -c -p port

redis数据库的基础的更多相关文章

  1. Redis数据库入门基础,及优缺点介绍

    简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis 是一个高性能的key-value数据库.R ...

  2. redis数据库基础篇

    一.Redis介绍 Redis 是一个高性能的key-value数据格式的内存缓存,NoSQL数据库.NOSQL:not only sql,泛指非关系型数据库.关系型数据库: (mysql, orac ...

  3. 关于Redis数据库 ---- 基础篇

    Redis数据库也被称为数据结构数据库,因为存储基于key-value模式. 其中,value值可以为字符串(string),哈希(map),列表(list),集合(set)和有序集合(zset). ...

  4. SpringBoot2.0 基础案例(08):集成Redis数据库,实现缓存管理

    一.Redis简介 Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elastic ...

  5. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  6. Redis数据库入门教程

    [使用redis客户端] 我们直接看一个例子: 复制代码 代码如下: //这样来启动redis客户端了 $ ./redis-cli //用set指令来设置key.value 127.0.0.1:637 ...

  7. Redis数据库的使用与介绍

    本周11-15号开始用Redis数据库在现有的平台基础上开发一个独立模块,这是一个边学习.边记录.边交流.边开发.边总结的过程.大部分随笔都是个人的“工作日志”,旨在记录自己学习过程中收集的一些资料, ...

  8. [转载]NoSQL数据库的基础知识

    关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过“NoSQL”呢?近年,这个词极受关注.看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会 ...

  9. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

随机推荐

  1. 设计模式之结构类模式PK

    结构类模式包括: 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 结构类模式着重于如何建立一个软件结构 为什么叫结构类模式呢? 因为他们都是通过组合类或对象产生更大结构以适应更 ...

  2. osi参考模型(开放系统互连参考模型)

    自互联网诞生以来,随着网络飞速发展,用户迫切要求能在不同体系结构的网络空间交换信息,使得不同的网络能够互联起来. 国际化标准组织(International Organization for Stan ...

  3. kodi18.1设置中文的方法

    默认情况下,新安装好的 Kodi 启动后是英文版的界面.但事实上,Kodi 包含多国语言 (包含简繁体中文版),我们可以设置改回简体中文界面.不过,很多人都遇到修改 Kodi 的语言为中文之后整个界面 ...

  4. 记一发idea resources下rename的坑

    resources rename文件 '.'不表示下级目录 只是作为一个字符 第一个com.uniubi.dao 是一层层创的.第二个是直接用idea 创的如下图. maven 打包后如下所示. ps ...

  5. Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 环境

    1. kolla 项目介绍 简介 kolla 的使命是为 openstack 云平台提供生产级别的.开箱即用的自动化部署能力. kolla 要实现 openetack 部署分为两步,第一步是制作 do ...

  6. Eclipse中使用Maven搭建SSM框架

    Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...

  7. 一行一行手敲webpack4配置

    代码:github 一.webpack4--基本配置 这一部分通过webpack的基本配置,使用loader对图片和样式进行打包,从而了解webpack4简单的用方法,保证自己能够配置正确,提升学习动 ...

  8. AI - TensorFlow - 可视化工具TensorBoard

    TensorBoard TensorFlow自带的可视化工具,能够以直观的流程图的方式,清楚展示出整个神经网络的结构和框架,便于理解模型和发现问题. 可视化学习:https://www.tensorf ...

  9. Fiddler原理~知多少?

    首先我们学习Fidder这个工具,我们就应该去了解它的基本东西,比如这个单词的意思.Fiddler叫:小提琴.骗子的意思. 那么它是干什么的呢? Fiddler是一个http协议调试代理工具,它能够记 ...

  10. FileUtils【获取SD卡根目录、读写文件、移动、复制、删除文件、获取文件名、后缀名操作类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装了获取SD卡根目录路径.以及对文件读写.获取文件名等相关操作. 因为需要用到android.permission.READ_EX ...