Redis的使用

Redis的使用

redis基本命令:

  Redis启动命令:Redis-service &

  连接Redis : Redis-cli -h 主机名 -p 端口号

  select index 切换数据库 初始16个数据库 从0开始15结束

  dbsize 查看当前数据库中的key值

  查看当前库中所有的key实列 keys *

  清空当前数据库实列 : flushdb

  清楚所有的数据库实例 : flushall

  获取当前redis服务的所有配置信息 : config get *

Redis的五种数据类型:

  字符串 :string 单key单value name:zzy

  列表 : list 单key多有序value 可重复

  集合 : set 单key多无序value 不可重复

  对象: hash 单key 对象 列入:student:name:zzy,age:18,sex,man

  有序集合: zset :单key多可排序value 不可重复

Redis的操作命令:

key的操作:

  keys 通配符 *所有

  ?匹配一个字符

  [] 匹配一个字符并且这个字符要在这个括号中取

  exists key值 key值 key值 判断这个key值是否存在 返回存在的个数 不存在返回0

  move key值 index数据库下标 把这个key移动到指定的数据库

  ttl key值 查看指定key值的最大生命周期 不存在返回-2 没设置最大生命周期返回-1

  expire key值 time时间 给指定的key值设置生命周期 到时间自动删除

  type key 查看指定key的数据类型 是五种数据结构中的哪一种

  rename key newkey 重命名key值

  del key key key 删除指定的key 返回实际删除key的数量

  

string类型的操作:

  set key value 设置string类型的数据到redis中

  get key 获取指定key的value值 key存在会覆盖之前的value

  append key value 给指定key值的value追加内容 返回追加之后的字符串长度 如果key不存在 那么新建一个key并且把value设置为value

  strlen key 获取指定key值的 value值的长度

  incr key 对指定key值的value(数值)进行加1 运算 如果不存在 设置初始值 为0 在加1

  decr key 对指定key值的value进行减1运算 和incr使用方法相同

  incrby key offset 数值 对指定key值进行加指定值的加法运算

  decrby key offset 数值 对指定key值进行指定值的减法运算

  getrange key start end 截取指定key值的value值从下标start到end的字符串 也可以从友向左 -1开始

  setrange key start value 指定key的值从start开始被 value覆盖

  setex key seconds value 设置key和value的同时给他设置生命周期

  setnx key value 设置keyhevalue 如果key存在那么取消设置

  mset key value key1 value1 批量设置key 和 value

  mget key key1 key2 批量获取key值

  msetnx 批量设置key和value 只要有一个key存在时就全部放弃设置

  

list类型的操作:

  lpush key value1 value2 value3 从列表的左侧按顺序依次插入

  lrange key start end 查看指定key值的value从下标为start开始到下标end结束 可以用-1表示最后的下标

  rpush key value 1 value2 value3 从列表右侧依次插入按顺序插入

  lpop key 从指定列表中移除表头的第一个元素

  rpop key从指定列表中移除表尾的第一个元素

  lindex key index 获取指定key值的指定下标的value值

  llen key 获取指定key值的列表的长度

  lrem key count value count>0 时从左侧开始移除指定key值的count个 和value值相同的 value count<0时从右侧 count=0时移除全部

  

set类型的操作:

  sadd key value1 value2 望set集合中设置多个值 注意不能重复

  smembers key 获取指定key值的 所有value

  sismember key member 判断member在指定key集合中是否存在 存在返回1 不存在返回0

  scard key 获取指定集合中所有的元素个数

  srem key member member 移除指定集合中的指定的元素

  spop key count 随机移除指定个个数的元素

  srandmember key count 随机在指定集合中获取指定个元素

  smove old new member 移动指定集合中的元素到指定集合中去

  sdiff key key key 返回第一个集合中由其他集合中没有的元素 (并集)

  sinter key key key 获取所有集合中都有的元素 (交集)

  sunion key key key 获取所有集合组成的大集合 (补集)

  

hash类型的操作:

  hset key filed value filed value 给指定hash设置多个或一个键值对

  hget key filed 获取指定key值和filed的value值

  hmset key filed value filed value 批量设置多个键值对

  hmget key filed filed 批量获取指定的key值和多个filed 值

  hgetall key 获取指定hash 中所由的filed 和 value

  hdel key filed filed 删除指定hash中的 多个filed

  hlen key 获取指定hash 中的filed的长度

  hexists key filed 判断指定的hash中是否存在指定的filed

  hkeys key 获取指定hash中所有的filed

  hvals key 获取指定hash中所有的value

  hincrby key filed number 给指定的hash 的filed的值进行加法运算number

  hincrbyfloat key filed float 给指定的hash的filed的值进行浮点加法运算 number

  hsetnx key filed 给指定的hash设置filed如果不存在设置成功 如果存在设置失败

  

zset类型的操作: 不可重复的集合 每个元素会关联一个分数 分数可以重复 但元素不能重复

  zadd key score member score member 给zset集合添加一个或多个元素但必须要有source和member 数值和元素

  zrange key start end 【withscores】获取指定zset集合中从start开始到end结束的下标值 是否更上数值

  zrangebyscore key min max 【withscores】 获取zset中指定范围的元素 是否跟上 score

  zrem key member member 删除指定zset集合中的中的元素

  zcard key 获取指定zset集合中的所有的元素的个数

  zrank key member 获取指定zset集合中的元素的排名(排名从0 开始)

  zrevrank key member 获取指定zset集合中的元素的排名 (从大到小排)

  zcount key min max 获取指定zset集合中指定范围的元素的个数

  zscore key member 获取指定zset集合中指定元素的分数

  

Redis的配置文件:修改 redis.conf 文件

网络配置:

    port : 端口号

    bind : 主机ip地址 绑定ip地址

    tcp-keepalive:保持连接的时间长

常规配置:

    logfile redis输出日志的位置 默认输出到控制台

    databases : 初始化数据库实列 默认16个

安全设置:

    默认不设置密码 追求性能的高效

    requirepass : 设置密码 如果要设置密码的话还要 protected-mode=yes 才可以使用 并且登录的时候 要用redis-cli -h -p -a 密码登录

Redis持久化设置 RDB和AOF:

Redis持久化设置 RDB 和 AOF: 持久化设置是指在redis服务宕机时有重要的数据时把他储存到硬盘中

  RDB策略: 在指定时间内达到指定的写操作会自动的进行一次持久化操作 默认(1分钟1w次 5分钟10次 15分钟1次) RDB策略时redis默认的持久化策略

    save 修改这个属性可以改变进行持久化操作的设置

    dbfilename : 持久化操作到那个文件 默认储存在(dump.rdb)文件中

    dir : 持久化操作的文件储藏在那个文件夹 默认在根目录中

  AOF策略:生成一个日志文件用来记录每一次的写操作命令 当服务器发生宕机时 从小执行一遍该日志文件 每次redis服务启动时 都会执行一遍该日志文件(效率低下)

    appendonly : yes/no 是否开启AOF策略 默认no关闭

    appendfilename:AOF策略指定生成的日志文件

    appendfsync : AOF异步持久化策略 always 同步 everysec 出厂默认推荐 每秒异步执行一次 no 不及时同步由系统决定何时同步

Redis的事务:

事务:事务是指把一组数据库操作命令一起执行 保证操作原子性 要么同时成功 要么同时失败

  redis事务 :允许把一组redis命令放在一起 把命令序列化 按顺序执行 保证一部分的原子性

  redis事务的 原子性 :

    1)在压入命令时 就发生错误时 所有的命令都不执行 保证了一部分原子性

    2) 压入命令时没有发生错误 但在执行命令时有一条命令发生错误那么 那一条发生错误的命令不会执行 其他正确的命令正常执行

   命令:

  multi : 标志者一个事务的开始

  exec : 用来执行一组redis命令

  discard : 回滚 清除掉改组所有的 命令

  watch : 监控某一个键值 当他发生改变时那么所有的操作都不执行 (锁,多线程的执行)

  unwatch : 放弃监控所有的键值

  

Redis消息的发布和订阅:

  redis客户端订阅频道 消息的发布者往频道上发布消息 所有订阅此频道的客户端都能收到该消息

  subscribe: ch1 ch2 ch3 订阅一个或多个频道

  publish : ch1 消息 给指定频道发布消息

  

Redis的主从复制(搭建集群):主少从多 读写分离 主写从读 主写同步复制到从 主 (master)从(slave)

  查看当前redis服务的配置 : info replication

  复制3份redis.conf文件

  修改:

    port

    dbfilename

    logfile

    pidfile

  设置主从关系 设从不设主 : (注意: 一个redis服务可以是从机也可以是主机 但是只要身份有从机的就不能写数据 只能读)

  在那个设置从机的服务上 : slaveof 127.0.0.1 6379

  全量复制: 一旦主从关系确认 会自动把主机上已有的 所有数据同步复制到从机上

  增量复制 : 在主机上增加的数据也会复制到从机上

  主写从读 读写分离 : 注意 主机能读写 但从机只能读不能写 主机尽量不要读 (读写分离)

  主机宕机:从机原地待命 数据不会在发生改变

  主机恢复 : 从机重新连接 没有影响

  从机宕机:主机和其他从机没有影响 主机少一个从机

  从机恢复 : 不会自动连接主机 而是恢复初始设置变成主机 需要从新设置主从关系

  主机宕机 从机上位:

  在需要变成主机的 服务器上输入

  slaveof no one 断开所有的主从关系 重新设置主从关系

  

Redis的哨兵模式:主机宕机 从机上位的自动版

  创建一个哨兵的配置文件 (网上找)

  文件名随意 配置文件内容 ( sentinel monitor dc-redis 127.0.0.1 6379 )

  启动哨兵:

    redis-sentinel 哨兵配置文件名

  

  如果以前的主机恢复那么他会变成从机

Jedis 的使用 (java连接 reddis服务):

  Jedis依赖 两个对象 Jedis(redis) Transaction (事务)

posted @ 2021-06-14 18:00  zhiy  阅读(33)  评论(0)    收藏  举报