• Redis简介


    一、简介

    1. Redis(Remote Directory Server)是一种基于key-value的NoSql内存数据库,使用C语言开发

    2. 创建单实例数据库:下载、编译、安装、配置

    http://www.cnblogs.com/yjmyzz/p/4105056.html

    二、连接数据库

    1. Windows,使用RedisDesktopManager软件

    2. Linux连接线上redis数据库

    a. ssh 到redis跳板机

    b. redis-cli -h 127.0.0.1 -p 30006 连接集群的一台机器sentinal

    -h <hostname> Server hostname (default: 127.0.0.1)

    -p <port> Server port (default: 6379)

    c. 在集群的一台机器上info 查询master服务器

    d. 返回到redis跳板机,根据数据库名称进入真正的redis master服务器查询

    redis-cli -h 127.0.0.1

    select 5 // 选择第几个数据库

    e. 输入密码登录:auth password

    三、存储的数据类型:

    1. 字符串<String>,命令:set/get/del key,最大容量是512M

    2. 哈希hash,命令:hset/hget/hdel key field

    3. 列表/队列<list>,命令:lpush/rpop

    4. 无序集合set,没有重复数据,命令:sadd/smembers key

    5. 有序集合zset,命令:zadd

    四、redis命令

    1. redis命令都是原子性的

    2. keys:找到指定格式的key列表,但是阻塞,性能不好,不推荐使用

    3. scan:无阻塞找到指定格式的key列表,但是有重复元素,如果数据量大,必须使用scan

    4. 管道pipeline:将多次IO操作缩减为1次 

    五、为什么存取速度快

    1. 使用C语言开发

    2. 纯内存访问

    3. 单线程,没有线程切换带来的性能开销

    4. 非阻塞多路IO复用机制

    5. 每秒10万次读写操作

    六、redis事务

    1. redis事务的本质是一组命令的集合,一次性执行这个集合,即使用pipeline

    2. 正常流程:multi->redis命令(此时命令加入了队列,并没有执行)->exec/discard

    3. redis事务不保证原子性,如果编译时失败,所有命令不会被执行;如果某条命令运行失败,后面的正确的语句仍然会被被执行

    4. watch命令,监控key,在开启事务后,如果key被其他线程修改,则事务执行失败;watch类似于乐观锁

    5. 使用lua脚本可以保证原子性

    七、redis过期策略

    1. redis在内存里,如果写入的数据太多,会自动清除一部分数据

    2. 定期删除:每隔100ms随机抽取一部分key,检查是否过期,过期就删除;不能检查全部,否则性能不好

    3. 惰性删除:获取key的时候,检查是否过期,过期就删除

    4. 定期删除+惰性删除还是会有漏掉的过期key

    八、内存数据淘汰机制:当内存不足时,redis会删除一些key

    1. 禁止淘汰数据

    2. 随机回收

    3. 最近最少使用

    4. 删除更早过期时间的key

    九、使用场景

    1. 普通缓存

    2. 会话缓存:存储多台应用服务器的会话信息

    3. 查找表

    4. 队列

    5. 计数器:对String进行自增自减运算

    6. 发布/订阅

    7. 共同好友:set的交集、并集操作

    8. 排行榜:zset的有序操作

    参考:

    https://www.cnblogs.com/leeSmall/p/8344955.html

    https://www.cnblogs.com/DeepInThought/p/10720132.html

  • 相关阅读:
    .NET CORE中的配置系统
    .Net Core使用AspNetCoreRateLimit实现限流
    .NET CORE 依赖注入2
    linunx命令学习_文件命令
    .NET CORE 日志系统
    Rabbit MQ
    WPF学习
    Unity asp.net 依赖注入框架Unity
    .NET Core 依赖注入1
    备忘asp.net core使用中间件实现IP白名单访问
  • 原文地址:https://www.cnblogs.com/june0816/p/6261771.html
Copyright © 2020-2023  润新知