zoukankan      html  css  js  c++  java
  • redis数据库的基础

    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
  • 相关阅读:
    探索Javascript 异步编程
    前端性能调优
    怎样选择前端框架
    前端地图截屏方案
    不一样的山顶角
    前后端分离场景下的另类登录认证方案
    React Diff 算法
    纯css实现Magicline Navigation(下划线动画导航菜单)
    Tinymce group plugin
    自适应process组件
  • 原文地址:https://www.cnblogs.com/tang-s/p/10109430.html
Copyright © 2011-2022 走看看