Redis 草稿

Nosql概述

大数据,读写分离,数据缓存,分库分表
架构演变的分析
MySQL不能存储一些较大的文件,
3v : 海量,多样,实时
3高:高并发,高拓展,高性能
nosql+rdbms一起使用才是最好的
针对性的数据库,商品性的数据库,文档型的数据库,
图片:
分布式文件系统Fastdfs
- List item
- tfs
- gfs
- hdfs
- oss
搜索商品的关键字
- solr elasticsearch
- iserach
热点缓存
NoSQL的四大分类:

  • KV键值对:
    • Redis +Tair
    • Redis+memecache
  • 文档型数据库:
    • MongoDB 重要:处理大量文档,是非关系数据库中功能最丰富,最像关系型数据库
    • ConthDB
  • 列式存储数据库
    • HBase
    • 分布式文件系统
  • 图关系数据库
    • Neo4f,infoGrid

Redis能干嘛?远程服务字典
持久化,内存存储转到磁盘存储,断电即逝,rdb,aof
高速缓存
发布订阅系统
地图信息分析
计时器,计数器

推荐在Linux下使用

port 6379
redis-benchmark官方自带的性能测试工具

基础知识:

databases 16
切换数据库 select 3
DBSIZE
keys *
flushdb清空
flushall
redis是单线程的,不是基于cpu的,基于内存和网络带宽
多线程不一定比单线程效率高,多线程cpu上下文会切换,耗时操作

五大数据类型

exists keyname 判断是否存在
move name 1 1代表当前数据库
expire name 10 10后到期移除
ttl name 查看当前key的剩余过期时间
type name 查看key类型

  • string 类型
    append key1 " " 追加
    strlen key1 长度
    incr views 自加一
    decr views 自减一
    incrby views 10 增10
    decrby views 5 减5
    getrange key1 0 3 截取字符串【0,3】
    getrange key1 0 -1 获取全部
    setrange key1 1 xxx 替换从指定字符串
    setex (set with expire) 设置过期时间
    setnx (set if not exist)不存在再设置在分布式锁中常会使用
    setex key3 30 “hello”
    setnx mykey “redis” 如果mykey存在,创建失败
    mset 同时设置多个值
    mgset 同事获取多个值
    msetnx k1 v1 k4 v4 原子性操作,要么一起成功,要么一起失败
    set user:1{name:zhangsan,age:3 }设置一个user:1对象
    mser user:1:name zhangsan user:1:age 4
    mget user:1:name user:1:age
    getset key1 xxx 如果不存在值,返回nil 并设置为xxx
    如果存在,获取原来的值,设置新的值
  • list 所有命令都是l开头的
    lpush list
    lrange list 0 -1
    rpush list righr
  • 事务:
    redis单条命令保证原子性,但事务不保证原子性
    redis事务本质:一组命令集合
    没有隔离级别的概念
    开启事务multi
    命令队列 …入QUEUED入队
    执行事务exec
    取消事务discard
    编译型 都不会执行
    运行时异常 ,其他命令可以执行,错误的命令不执行
  • 监控watch, unwatch 放弃监视
    如果事务失败,先解锁,让后再监视
  • Jedis
    是官方推荐的java连接开发工具 导包,
    编码测试:连接数据库,操作命令,断开连接
    连接数据库:
    new Jedis(host ,port)
    jedis.xxx()方法==指令
    常用api 五大数据类型
  • 整合spring boot
    用spring data连接的
    spring boot jedis 被替换成lettuce
    jedis采用直线连接,多线程不安全,可用jedis pool
    lettuce 采用netty 多个线程共享,不存在线程不安全,NiO
    自定义配置redisconfig配置类redisTemplate
    所有的对象都要序列化
  • redis持久化
    rdb 快照,最后一次不能dum
    aof 记录写的操作历史命令
  • 发布订阅
    发送者 管道/频道/字典 多个订阅者
    订阅者:subscribe xxx
    发布者: publish xxx message
    实时消息,实时聊天,订阅关注系统
    复杂的就用消息中间件MQ
  • 主从复制
    将主redis服务器的数据,复制到其他从Redis服务器中
    主 写, 从 读 最少一主二从
    info replication 查看当前库信息
    修改三个配置文件,对应的信息
    端口、pid 名、log文件名、dump.rdb文件名
    默认每一个都是主节点,一般只配置从机
    SLAVEOF 主机名字,主机端口
    命令行配置的, 从机重启后就会变成主机
    从机只要连接到主机后,会发送一条sync同步命令,主机会将传送整个数据文件到从机,完全同步,全量复制。
    增量复制:连接主机后,主机每次命令,从机就同步得到数据
    层层链路模式: 2号机:SLAVEOF 主机名字1,主机端口1
    3号机:SLAVEOF 主机名字2,主机端口2
    主机宕机后,从从机中选一个当主机,
    从机配置:slvaeof no one
    如果主机重启后,变成光杆司令了
  • 哨兵模式:自动选举主机模式
    多哨兵模式:
    配置哨兵配置文件:sentinel.conf
    sentinel monitor 被监控的名称 host port 1(投票)
    启动哨兵:redis-sentinel sentinel.conf
    主机宕机后,投票选举一个从机当主机,原主机后回来后当从机
    集群的哨兵配置
  • redis缓存穿透和雪崩
    布隆过滤器
    分布式锁,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值