本文来自牛鹭学院学员:廖清蓉
很多刚刚进入软件测试行业的人对单机版的redis认识还不全面,别人问你redis是啥吱唔半天也说不出个所以然,今天牛鹭学院就系统性的为大家梳理一下吧~
目录
1、Redis介绍
Redis与MySQL/Oracle的区别2、Redis数据结构
单机redis搭建redis基本数据类型用法3、Redis性能测试
4、Redis架构模式
Redis介绍
与MySQL不同的是,redis是一种非关系型数据库。Mysql存储在磁盘里,而Redis存储在内存里。
Redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是Mysql+Redis,Mysql作为主存储,Redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能。
Redis数据库有16个,分别是0-15,每个数据库用数字命名,而且每个数据库的连接密码都一样,redis只允许一个密码。数据库之间不能共享,并且基于单机才有,如果是集群,就没有数据库的概念了。
redis之所以分这么多个数据库,也是为了区分业务,不同的业务存放在不同的库,但是一个redis,一般是给一个项目用,项目内的不同业务,单独用一个库,这样不会相互有数据交叉。现在很多微服务项目,一个项目里有多个微服务,redis统一由团队管理,每个服务连接自己的库就可以了。
Redis与MySQL/Oracle的区别
存储介质:
Redis存储在内存,但是可以将数据持久化到硬盘。MySQL/Oracle将数据持久化的存储到硬盘;
数据库类型:Redis属于非关系型数据库;MySQL/Oracle关系型数据库
存取效率:Redis直接在内存中存取数据效率高;MySQL/Oracle每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。
会在反复链接数据库上花费大量时间,从而导致运行效率过慢;反复的访问数据库也会导致数据库的负载过高Redis数据结构
测试案例
测试案例分析:
内存占用过大问题:
经过计算1byte=8bit,每个客户进行一次查询存储的key占用的内存w/8//=0.47M,粗略估计客户进行查询,存储key占用的内存=*0.47(将近1G),如果查询频繁,则必然会出现内存溢出的风险。
优化方法:
针对客户的操作频率,一般不会不停地进行数据查询操作,所以可以将客户查询存储的key设置过期时间,这样可以减小内存压力
单机redis搭建
redis安装三部曲:
准备好redis的安装包,用xftp传输至Linux下root目录下,解压并进入redis-5.0.7目录下
安装C语言编译器yuminstallgcc
2.执行命令makeMALLOC=libc,此时会生成一个redis的源文件
3.输入makeinstall,当有如下提示,表示你是安装成功的
此时我们查看一下redis的配置文件ls
grepconf并进入到配置文件里设置连接viredis.conf
Esc+/输入port查看默认的端口号,输入,此时会跳转到的关键字部分,我们在最后一个部分加入如下一行,用于绑定自己的IP地址,当然也可以走默认的,不做修改
保存退出,去启动它src/redis-serverredis.conf
如果能够看到如下的图形,表示构建成功
在root目录下执行ps-ef
grepredis查看redis是否已在运行;
然后进入到redis目录下,输入命令src/redis-cli-h..8.3-p进入redis数据库操作
redis基本数据类型用法
数据库之间的切换
Redis支持五种数据类型:
1.字符串(String):增删改查
setkeyvaluedelkeysetkeynewvaluegetkeymsetkey1value1key2value2--批量增加
2.哈希(Hash)
hsetkeyfield_1value1–增hmsetkeyfield_1value1filed_2value2--批量增hdelkeyfiled--删hsetkeyfieldnewValue–改hgetkeyfield--查某一field值hvalsfiled–查key对应的field-valueshlenkey--计算field个数hkeys--获取所有field
3.列表(list)
rpushkeyvalue[value…]--右插lpushkeyvalue[value…]–左插linsertkeyBEFORE
AFTERpivotvaluelrangekeystartstoplindexkeyindexllenkeylpopkey–左弹rpopkey–右弹lsetkeyindexvalue--修改下标index的元素值
4.集合(sets)
–集合内元素操作
saddkeyelement[element…]--增sremkeyelement[element…]--删scardkey--计算元素个数sismemberkeyelement--判断元素是否在集合中spopkeysmemberskey--获取所有元素–集合间元素操作
sinterkey[key…]--交集sunionkey[key…]–并集sdiffkey[key…]--差集–将结果保存
sinterstoredestinationkey[key…]suionstoredestinationkey[key…]sdiffstoredestinationkey[key…]
5.有序集合(sortedsets)
Redis性能测试
Redis自带了一个叫redis-benchmark工具来模拟N个客户端同时发出M个请求
Redis架构模式
单机版
优点:简单
缺点:内存容量有限;处理能力有限;无法高可用
集群版
优点:
主从复制:Redis的复制(replication)功能允许用户根据一个Redis服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步给从服务器,从而一直保证主从服务器的数据相同。
————————————————