redis1:概述、安装测试、基础知识、5大数据类型
查命令两种方法: 1.外网 redis.cn/commands.html 2.内网 help@string、help@set等
概述
Redis是什么?
c 写的 一个基于内存的可持久化的日志型、key-value数据库。
Redis(Remote Dictionary Server ),即远程字典服务。
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis能干什么?
效率高、可用于高速缓存; 地图信息分析; 计时器、计数器(浏览量); 发布订阅系统
- 内存存储、持久化,内存是断电即失的,所以需要持久化(RDB、AOF)
- 高效率、用于高速缓冲
- 发布订阅系统
- 地图信息分析
- 计时器、计数器(eg:浏览量)
特性
多样的数据类型、持久化、集群、事务
- 多样的数据类型
- 持久化
- 集群
- 事务
环境搭建
安装、启动服务、开机启动、查看配置文件、开启
yum install redis; //安装
service redis start; //启动服务
chkconfig redis on; //开机启动
vim /etc/redis.conf; //查看配置文件
redis-cli; //启动redisauth "123"; //输入密码进入
性能测试
redis-benchmark:Redis官方提供的性能测试工具,参数选项如下:
简单测试:
# 测试:100个并发连接 100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
结果:
基础知识
默认有16个数据库
vim /etc/redis.conf
:查看配置文件
redis默认有16个数据库
默认使用的第0个;
16个数据库为:DB 0~DB 15 默认使用DB 0 ,可以使用select n切换到DB n,dbsize可以查看当前数据库的大小,与key数量相关。
查看数据库数量、数据库大小、切换数据库、属性数据库
127.0.0.1:6379> config get databases # 命令行查看数据库数量databases1) "databases"2) "16"
127.0.0.1:6379> select 8 # 切换数据库 DB 8
127.0.0.1:6379[8]> dbsize # 查看数据库大小
不同数据库之间 数据是不能互通的,并且****dbsize 是根据当前库中key的个数。
keys * :查看当前数据库中所有的key。
flushdb:清空当前数据库中的键值对。
flushall:清空所有数据库的键值对。
redis为什么效率这么高
Redis是单线程的,Redis是基于内存操作的。
所以Redis的性能瓶颈不是CPU,而是机器内存和网络带宽。
那么为什么Redis的速度如此快呢,性能这么高呢?QPS达到10W+
Redis为什么单线程还这么快?
· 误区1:高性能的服务器一定是多线程的?
· 误区2:多线程(CPU上下文会切换!)一定比单线程效率高!
核心:Redis是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!),对于内存系统来说,如果没有上下文切换效率就是最高的,多次读写都是在一个CPU上的,在内存存储数据情况下,单线程就是最佳的方案。
五大数据类型
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
Redis-key
在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。
下面学习的命令:
- exists key:判断键是否存在 exist name
- del key:删除键值对 del name
- move key db:将键值对移动到指定数据库 move name 8
- expire key second:设置键值对的过期时间(s) expire name 30
- type key:查看value的数据类型 type name
127.0.0.1:6379> ttl age # 查看key的过期剩余时间
(integer) -2 # -2 表示key过期,-1表示key未设置过期时间
127.0.0.1:6379> keys *
关于TTL命令
Redis的key,通过TTL命令返回key的过期时间,一般来说有3种:
- 当前key没有设置过期时间,所以会返回-1.
- 当前key有设置过期时间,而且key已经过期,所以会返回-2.
- 当前key有设置过期时间,且key还没有过期,故会返回key的正常剩余时间.
关于重命名RENAME和RENAMENX
- rename key newkey修改 key 的名称
- renamenx key newkey仅当 newkey 不存在时,将 key 改名为 newkey 。
string(字符串)
看一下冒号的用法:(其实没有什么特殊的功能,只不过是人为给key加了一个格式而已。对于redis底层来说,没有任何的变化)
127.0.0.1:6379> mset person:1:name zs person:1:age 18
OK
127.0.0.1:6379> set article:100:view 20
OK
127.0.0.1:6379> incr article:100:view
(integer) 21
127.0.0.1:6379> keys *
1) "person:1:name"
2) "article:100:view"
3) "person:1:age"
127.0.0.1:6379>
上面就是用 set来保存了一个对象。 key是 person:1:name 值是zs。表示 id为1的person对象的name属性是zs
本质上是一个有冒号的string做成的key。
至于为什么这样写,有一点好处就是可以实现key的复用。 比如上面的article
redis1:概述、安装测试、基础知识、5大数据类型相关推荐
- 测试岗位面试前复习之【测试基础知识篇】
测试基础知识篇 一.app测试相关 1.android与ios的app测试的区别: 2.app测试和web测试的重点: 3.性能测试考量的指标: 4.app的性能测试,需要重点关注哪些方面? 5.站在 ...
- 软件测试整理一:测试基础知识以及开发、测试模型、按照开发阶段进行测试
文章目录 一.基础概念 1.什么是软件测试 2.软件测试的目的 3.软件测试的原则 4.软件测试的分类 4.1 按照开发阶段分类 4.2 按照软件特性分类 4.3 按照测试技术分类 4.4 按照测试运 ...
- 软件测试52讲 - 笔记(一)- 测试基础知识
测试基础知识 01 | 你真的懂测试吗?从"用户登录"测试谈起 总结 案例 功能 测试用例 基础功能用例(基于等价类和边界值设计) 可添加功能用例(经验型) 安全性用例 性能用例 ...
- 视频测试基础知识--视频算法DMOS和PPSNR--视频参考与无参考测试介绍
视频测试基础知识--视频算法DMOS--视频参考与无参考测试介绍 测试则从传统的静态.单帧像分析,转换为动态测试.图像质量分析. 虽然单帧像分析可提供信号定时.色深.线条同步化,以及更多有用信息,但压 ...
- JMeter-01-性能测试基础知识介绍
JMeter-01-性能测试基础知识介绍 开篇词 性能测试常见分类 Web服务的主要指标 前端页面的主要指标 数据库的主要指标 开篇词 参加工作这些年来,性能测试做过不少,主要用的LoadRunner ...
- Python基础知识与常用数据类型
Python基础知识与常用数据类型 目录 Python基础知识与常用数据类型 一.Python概述: 二.Python中的基础语法: 三.Python内置数据结构: 4.附录 一.Python概述: ...
- 光纤铜缆测试安装的基础知识你都了解了吗?
福禄克经销商-明辰智航走访了多名读者,发现他们都说自己精通测试系统设计.安装和测试,但是很多行业的新标准新要求却是很懵懂.所以,了解当前较新的性能参数,系统必须满足的各种标准和要求以支持新的应用,确保 ...
- 软件质量保证与测试基础知识小计
写在前面: 这是我再期末考试阶段根据老师的重点进行的知识总结(只涉及概念等基础内容,不涉及具体技术操作流程),现分享出来,欢迎大家批评指正. 目录 第一章 概述 第二章 软件质量工程体系 第三章 软件 ...
- Datawhale-深入浅出pytorch简介安装和基础知识
目录 1.1 PyTorch简介 1.1.1 PyTorch的介绍 1.1.2 PyTorch的发展 1.1.3 PyTorch的优势 1.2 PyTorch的安装 1.2.1 Anaconda的安装 ...
- 软件测试 - 测试基础知识
软件测试知识整理 软件测试 使用人工或自动手段,来运行或测试某个系统的过程.其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 贾祥玉 软件测试常用术语 1. ...
最新文章
- 有关EUV光刻机,你需要知道这些
- 图像“位操作”有什么用?
- Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式
- 顺丰同城:拟通过香港IPO发行1.31亿股H股 预期将于12月14日在港交所上市
- mysql 配置详解
- Android新建一个activty
- 使用Movavi Video Editor如何做局部放大的影片特效
- Unity实现鼠标拾取电脑屏幕指定区域像素点颜色
- 微信小程序源码获取(附工具的下载)
- Python办公自动化之文件读写操作与Excel,csv,PDF文件
- 架构 理论 定律 总结
- Python Pymysql实现数据存储
- 洛谷【2142】高精度减法
- mac正常连wifi,无法解析域名
- Unity3D 获取资源运行时内存和硬盘大小
- 无纸化车间是怎样实现的,能给企业生产带来什么?
- 访问图片资源403问题
- IDM浮动条无法弹出怎么办?
- SHEPWM特定消谐选择性谐波消除
- 小红书爆款笔记分析,新账号如何快速打造爆款文章
热门文章