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
  • 相关阅读:
    CSS浮动(float、clear)通俗讲解
    JAVA 类的加载
    数据库操作 delete和truncate的区别
    正则表达式 匹配相同数字
    Oracle EBS OM 取消订单
    Oracle EBS OM 取消订单行
    Oracle EBS OM 已存在的OM订单增加物料
    Oracle EBS OM 创建订单
    Oracle EBS INV 创建物料搬运单头
    Oracle EBS INV 创建物料搬运单
  • 原文地址:https://www.cnblogs.com/tang-s/p/10109430.html
Copyright © 2011-2022 走看看