• redis


    redis是什么

    Redis是一个开源的软件,使用c语言编写的NQL数据库,redis基于内存运行,支持持久化(数据恢复),采用的就是key-value(键值对,一个key对应一个value)存储形式,目前再分布式架构中,非常重要的一环
    Redis 是非关系型数据库,缓存型数据库

    关系型数据库

    关系型数据库是一个结构化的数据,行和列

    列:声明对象

    行:记录对象的属性

    表与表之间是有关联得,使用sql语句来对指定的库,表,进行增删改查

    在创表时,是设计好了表的结构,按照表的结构来存储数据,同时如果数据与表结构不匹配那么存储数据就会失败

    非关系型数据库

    非关系型数据库 : nosql      not only sql  不仅仅是数据库 ,是非关系型数据库的总称,除了主流的关系型数据库外的数据库,都认为是非关系型

    不需要预先建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数(如微信群聊里的文字,图片,视频,音乐等)

    redis key : value 键值对 形式存储,每个键之间没有直接关联,库与库之间也是互相独立

    关系型与非关系型数据库之间的区别

    1数据的存储方式不同
    2扩展方式不同,性能上的提升不同,关系型数据库靠的是提升本机性能,非关系型数据库可以横向扩展,加入节点如服务器的方式提高性能
    3对事物的支持性,mysql支持事务(mysql支持4种事务(4大特性)原子性,一致性,隔离性,持久性),非关系型数据库也支持事务,redis也可以支持事务,但是稳定性和处理能力都不如关系型数据库

    非关系型数据库的主要运用场景

    1操作的扩展
    2

    海量数据处理

    为什么需要海量数据处理,因为web2.0(核心是交互)技术的发展会产生纯动态网站的三高问题

    1.对数据库高并发读写的需求

    2.对海量数据搞笑存储与访问的需求

    3.对数据库的高可扩展性与高可用性的需求

    常见的缓存需求场景

    1                  数据库缓存
    2                  Web页面缓存
    3             Cpu和硬盘之间的缓存

    关系型数据库:先有库再有表,再到行,列最后存储数据

    非关系型数据库:先到库再到集合再到键值对,它不需要手动创建库和集合

    架构

    Redis服务器程序,是一个单进程模式,即只有一个主进程工作,也就是说在一台服务器上可以启动多个redis(端口号不能冲突)
    Redis的实际处理速度是完全依靠主进程的执行效率,这时会产生一个问题,服务器只部署了一个redis进程,多个客户端访问,可能会导致redis的处理能力下降,如果部署了多个redis进程,虽然能提高redis的并发处理能力,但是会给服务器的cpu带来很大的压力(工作当中一般一台服务器,一般部署3个redis进程(根据情况来看,高并发要部署多个,一般情况单进程足够))。

    Redis的特点

    1redis拥有极高的读写速度,它数据读取每秒可以执行11万次,写入数据每秒可以执行8万1千次
    2支持的数据类型很多,支持丰富的数据类型
    3支持持久化,平常的数据都是保存在内存中,持久化可以写入到磁盘中,既可以保存到本地,也可以实现备份
    4原子性,所有的操作都是原子性,要么都成功,要么都失败
    5支持主从模式也就是master    slave 模式

    *Redis为什么这么快

    1redis是纯内存结构,避免磁盘I/O(读写)的耗时
    2核心模块是一个单进程,减少了线程切换和回收线程的时间(线程回收失败会导致出现僵尸进程(只能重启才能解决僵尸进程))
    3I/O(读写)的多路复用机制,每个执行线路都可以同时执行读和写,使高并发的效率大大提高(特殊说明:redis的读写仍然是单进程模式)

    *Redis数据类型,五大数据类型

    1

    string(字符串)

    是redis最基本的类型,最大能存储512MB的数据,也可以春初任何数据如数字,文字,图片等等

    2

    list 数据类型

    列表当中的元素还是string

    3

    Hash 类型

    hash类型用于存储对象,采用hash格式来进行操作,占用的磁盘空间很少而且一个hash可以存储4294967295个键值对

    4set(无序合集)数据类型元素类型也是string,元素是唯一的,不允许重复,多个集合类型可以进行并集,交集,差集运算,主要运用,set当中的元素类型是唯一的,可以跟踪一些唯一性的数据,访问微博的用户名,只要把对应的名称redis,set集合可以自动保存唯一性,方便下一次的访问。
    5

    有序集合元素类型也是string

    元素唯一,不能重复,每个元素,每个元素都会关联一个double(小数点)的分数(score,表示权重),可以通过权重的大小,进行排序,元素的权重可以相同

    zset在线积分的排行榜,可以实时更新用户的分数,可以使用zrange命令获取积分比top 10 的用户,还可以使用zrank命令通过username来获取用户的排行信息,按照权重排列

    Set 和hset 创建普通类型和hash类型,一般情况下如无特殊需求,普通的创建方式即可

    对一个键进行多字段存储,节省内存,使用hash方式

    安装redis

    1. systemctl stop firewalld
    2. setenforce 0
    3. yum install -y gcc gcc-c++ make
    4. tar zxvf redis-5.0.7.tar.gz -C /opt/
    5. #opt目录下要有安装包才能解压
    6. cd /opt/redis-5.0.7/
    7. make -j 2 && make install
    8. make PREFIX=/usr/local/redis install
    9. cd /opt/redis-5.0.7/utils
    10. ./install_server.sh
    11. #一直回车确定
    12. Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
    13. #这里需要手动修改为 /usr/local/redis/bin/redis-server ,注意要一次性正确输入
    14. ln -s /usr/local/redis/bin/* /usr/local/bin/
    15. #把redis的可执行程序文件放入路径环境变量的目录中便于系统识别
    16. netstat -natp | grep redis
    17. #当 install_server.sh 脚本运行完毕,Redis 服务就已经启动,默认监听端口为 6379
    18. #Redis 服务控制
    19. /etc/init.d/redis_6379 stop #停止
    20. /etc/init.d/redis_6379 start #启动
    21. /etc/init.d/redis_6379 restart #重启
    22. /etc/init.d/redis_6379 status #状态
    23. #修改配置 /etc/redis/6379.conf 参数
    24. vim /etc/redis/6379.conf
    25. bind 127.0.0.1 192.168.233.10 #70行,添加 监听的主机地址
    26. port 6379 #93行,Redis默认的监听端口
    27. daemonize yes #137行,启用守护进程(后台运行)
    28. pidfile /var/run/redis_6379.pid #159行,指定 PID 文件
    29. loglevel notice #167行,日志级别
    30. logfile /var/log/redis_6379.log #172行,指定日志文件
    31. /etc/init.d/redis_6379 restart
    32. Redis 命令工具
    33. redis-server:用于启动 Redis 的工具
    34. redis-benchmark:用于检测 Redis 在本机的运行效率
    35. redis-check-aof:修复 AOF 持久化文件
    36. redis-check-rdb:修复 RDB 持久化文件
    37. redis-cli:Redis 命令行工具
    38. redis-cli 命令行工具
    39. 语法:redis-cli -h host -p port -a password
    40. -h :指定远程主机
    41. -p :指定 Redis 服务的端口号
    42. -a :指定密码,未设置数据库密码可以省略-a 选项
    43. 若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库
  • 相关阅读:
    前端面试的话术集锦第 9 篇:高频考点(webpack性能优化)
    感悟2022年:玫琳凯公布今年上半年以来的奖项、里程碑和成就
    ssm+vue+java微信小程序的英语学习激励系统#毕业设计
    移植u-boot和linux3.4.2内核到s3c2440——<1>:编写uboot
    Python中的几种推导式用法,先收藏再说......
    MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?
    函数式编程之递归的几种方式
    ElementUI入门到入土
    数据库实验3答案
    无监督学习KMeans学习笔记和实例
  • 原文地址:https://blog.csdn.net/2301_79410672/article/details/134505868