redis随手记

发布于:2025-03-13 ⋅ 阅读:(11) ⋅ 点赞:(0)

redis

keys *
exists
set name sun
get name
expire name 10
ttl name
del key
append key1 value 追加,如果不存在就是创建
incr key
incrby key 10
getrange key 0 -1 所有长度
setrange key key 1 xxx 这个就是替换
setex key 30 hello 设置30s
setnx key value 如果不存在设置 上面的是替换掉
mset mget
getset key val 获取并设置
-----------------------------------list-----------------

  • 当做栈去执行
    lpush list one
    lrange list 0 -1
    rpush list two
    lpop list
    rpop list
    lindex list 0
    rindex list 0
    llen list
    lrem list 移除几个 移除内容
    ltrim list 1 2 截取
    lset list 2 val 设置值
    linsert mylist before val1 val2
    ----------------------------------set-----------------
  • set 中的值是不能重复的
    sadd set val
    smemers myset 查看所有的元素
    sismember myset val
    scard myset 获取个数
    srem myset val 移除
    srandmember myset 随机取出一个元素
    srandmember myset 2
    spop myset 弹出
    smove myset myset2 val
    sdiff
    sunion
    sinter
    ---------------hash-----------------
  • map集合 key-value
    hset mysha key val
    hget mysha key val
    hdel mysha key 删除
    hlen mysha
    hexists mysha key
    hkeys mysha
    hvals mysha
    hincr
    hsetnx
    hsetex
    ---------------------zset------------有序集合
    -在set的的情况下家了个值
  • zadd myset 1 one 可以用1去排序
    zrange myset 0 -1
    zrangebyscore slary -inf +inf
    ZREVRANGEBYSCORE salary +inf -inf
    zrem salary xiaohog
    zrange salary 0 -1
    zcard salary 个数
    zcount salary 0 10
    --------------geospatial--------------地理位置
    geoadd china:city 116.40 39.90 beijing
  • 两级是无法添加 直接使用程序直接导入
    geodist china:city beijing shagnhai km
    georadius china:city 110 30 100 km 以一定的经纬度为中心去寻找
    --------------------hyperloglog----------------
    a{1,2,3,7}
    b{1,2,3,4}
    pfadd mykey a b c d e f
    pfcount mykey
    pfmerge mykey mykey2
    ---------------------bitmap-------------------------------
    setbit sign 0 1
    setbit sign 1 0
    setbit sign 2 0
    getbit sign 21
    -----------------------事务--------------
    原子性,一致性,隔离性,持久性
    没事隔离级别的概念,单条原子,事务不保证原子性
    multi

    exec

discard 取消事务
编译异常:所有命令都不执行,就是代码的问题
运行时异常:语法性错误,其他命令可以执行看,错误抛出啦 — 字符串 incr
------------------------锁---------------
悲观锁:什么时候都会出问题,无论做什么就是会加锁
乐观锁:认为不会出问题,在使用功能数据的时候去判断数据是否变动 一般都是使用乐观锁
-乐观锁
watch money 监视money在事务中如果money被改变 监视就回失败
unwatch
-----------------------配置文件-------------------
include 配置文件导入进来
bind 127.0.0.1 绑定ip
port 6379
daemonize yes 守护进程的方式运行
pidfile 如果是守护进程的方式运行就要配置
loglevel notice 日志
logfile
databses 16
—快照
在规定的时间内执行了多少操作会持久化
save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes 如果持久化出错,是否还要继续工作

rdbcompression yes 是否压缩rdb文件
rdbchecksum rdb文件校验
----replication

----security
requirepass 123456 设置密码
config get requirepass
config set requirepass
----client 客户端限制

----redis持久化
在指定的时间写入文件
rdb模式
save 60 5 都会触发一次 60秒内修改5次key
flushall 会自动触发 退出redis也是会生成rdb 恢复rdb就是把rdb文件放到目录下面就行
aof
将我们的所有的命令都记录下来,然后执行一遍 只需追加文件 大文件的时候就是会比较慢
默认是不开启的
aof的优点缺点:
每次修改都同步,默认开启的是每秒
缺点相对于数据文件来说aof远远大于rdb,修复的速度也比rdb慢
----redis发布订阅
消息发送者 频道 消息订阅
subscribe dingyue 订阅一个频道 就是一直会在哪里监听
publish dingyue nihao 发送一个信息
----主从复制
master slave
主以写为主
从读为主 一主二从
----主从复制
info replication 查看当前库的信息
配置主从 只需要配置从机 不需要配置从机
slaveof 127.0.0.1 6370
在配置文件中去配置
------------------------------哨兵模式-------------------

  • 自动选举的模式
  • 有一个独立的哨兵进程 去监视所有的redis 哨兵也有可能是集群 就是会去投票选举出一个
  • 启动哨兵redis-sentinel kconfig/sentinel.conf
  • failover 故障转移
    ------------------------------缓存穿透
  • 缓存是在内存中
  • 读的请求先在缓存中读取
  • 所有的请求穿过缓存 都去查询mysql 导致mysql宕机
  • 解决方式 布隆过滤器 在缓存中查询空对象
    ------------------------------缓存击穿
  • 非常大的热点 一直被查询 所有的人都查询这个key
  • 这个key
    ------------------------------缓存雪崩
  • key 集体失效 所有的数据都消失了 不可能放在数据库中

redis高可用
限流降级
数据预热


网站公告

今日签到

点亮在社区的每一天
去签到