单机redis全篇

1、Redis介绍

与MySQL不同的是,redis是一种非关系型数据库。Mysql存储在磁盘里,而Redis存储在内存里,
Redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是Mysql +Redis,Mysql作为主存储,Redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能。
Redis数据库有16个,分别是0-15,每个数据库用数字命名,而且每个数据库的连接密码都一样,redis只允许一个密码。数据库之间不能共享,并且基于单机才有,如果是集群,就没有数据库的概念了。
redis之所以分这么多个数据库,也是为了区分业务,不同的业务存放在不同的库,但是一个redis,一般是给一个项目用,项目内的不同业务,单独用一个库,这样不会相互有数据交叉。现在很多微服务项目,一个项目里有多个微服务,redis统一由团队管理,每个服务连接自己的库就可以了。

1.1 Redis与MySQL/Oracle的区别

  1. 存储介质:Redis存储在内存,但是可以将数据持久化到硬盘。MySQL/Oracle将数据持久化的存储到硬盘;
  2. 数据库类型:Redis属于非关系型数据库;MySQL/Oracle关系型数据库
  3. 存取效率:Redis直接在内存中存取数据效率高;MySQL/Oracle每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。

第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;
第二:反复的访问数据库也会导致数据库的负载过高

2、Redis数据结构

测试案例

【问题描述:面对后台一张"表"400w的资金账户数据量(Hadoop HDFS分布式系统存储映射后的其中一张表),中台接口通过impala查询(类似Oracle查询语法)将得到的结果以bitmap的形式存放至Redis,供其它中台接口调用,最终将数据在前端展示。】
测试案例分析:

  1. 内存占用过大问题:
    经过计算1byte=8bit, 每个客户进行一次查询存储的key占用的内存400w/8/1024/1024=0.47M,粗略估计2000客户进行查询,存储key占用的内存=2000*0.47(将近1G),如果查询频繁,则必然会出现内存溢出的风险。

优化方法:针对客户的操作频率,一般不会不停地进行数据查询操作,所以可以将客户查询存储的key设置过期时间,这样可以减小内存压力

2.1 单机redis搭建

redis安装三部曲:
准备好redis的安装包,用xftp传输至Linux下root目录下,解压并进入redis -5.0.7目录下

  1. 安装C语言编译器yum install gcc在这里插入图片描述
  2. 执行命令: make MALLOC=libc,此时会生成一个redis的源文件
    在这里插入图片描述
  3. 输入make install,当有如下提示,表示你是安装成功的
    在这里插入图片描述此时我们查看一下redis的配置文件ls | grep conf并进入到配置文件里设置连接vi redis.conf
    在这里插入图片描述Esc + /输入port 查看默认的端口号,输入127,此时会跳转到127的关键字部分,我们在最后一个127部分加入如下一行,用于绑定自己的IP地址,当然也可以走默认的,不做修改
    在这里插入图片描述
    保存退出,去启动它src/redis-server redis.conf
    在这里插入图片描述如果能够看到如下的图形,表示构建成功
    在这里插入图片描述
    在root目录下执行ps -ef | grep redis查看redis是否已在运行;
    然后进入到redis目录下,输入命令src/redis-cli -h 192.168.8.3 -p 6379进入redis数据库操作

2.2 redis基本数据类型用法

数据库之间的切换
在这里插入图片描述
Redis支持五种数据类型:

  1. 字符串(String):增删改查
    set key value
    del key
    set key newvalue
    get key
    mset key1 value1 key2 value2 --批量增加
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  2. 哈希(Hash)
    hset key field_1 value1 – 增
    hmset key field_1 value1 filed_2 value2 --批量增
    hdel key filed-- 删
    hset key field newValue – 改
    hget key field --查某一field值
    hvals filed – 查key对应的field-values
    hlen key --计算field个数
    hkeys --获取所有field
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述3. 列表(list)
    rpush key value [value …] --右插
    lpush key value [value …] – 左插
    linsert key BEFORE|AFTER pivot value
    lrange key start stop
    lindex key index
    llen key
    lpop key – 左弹
    rpop key – 右弹
    lset key index value --修改下标index的元素值
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述4. 集合(sets)
    – 集合内元素操作
    sadd key element [element …] --增
    srem key element [element …] --删
    scard key --计算元素个数
    sismember key element --判断元素是否在集合中
    spop key
    smembers key --获取所有元素
    – 集合间元素操作
    sinter key [key …] --交集
    sunion key [key …] – 并集
    sdiff key [key …] --差集
    – 将结果保存
    sinterstore destination key [key …]
    suionstore destination key [key …]
    sdiffstore destination key [key …]
    在这里插入图片描述在这里插入图片描述5 有序集合(sorted sets)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、Redis性能测试

Redis自带了一个叫redis-benchmark工具来模拟N个客户端同时发出M个请求
在这里插入图片描述在这里插入图片描述在这里插入图片描述

4、Redis架构模式

  1. 单机版
    优点:简单;
    缺点:内存容量有限;处理能力有限;无法高可用
  2. 集群版
    优点:
    主从复制:Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值