235_Redis_概述_常规操作
【摘要】 Redis概述&常用操作
1 Redis:Remote Dictionary Server(远程字典服务器)
是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器
Redis与其他key-value缓存产品有以下三个特点
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
- Redis不仅仅支持简单的 key-value 类型的数据,同时还提供list、set、zset、hash等数据结构的存储
- Redis支持数据的备份,即master-slave模式的数据备份
Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能
# 测试一:100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性能
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
# 测试出来的所有命令只举例一个!
====== SET ======
100000 requests completed in 1.88 seconds # 对集合写入测试
100 parallel clients # 每次请求有100个并发客户端
3 bytes payload # 每次写入3个字节的数据,有效载荷
keep alive: 1 # 保持一个连接,一台服务器来处理这些请求
17.05% <= 1 milliseconds
97.35% <= 2 milliseconds
99.97% <= 3 milliseconds
100.00% <= 3 milliseconds # 所有请求在 3 毫秒内完成
53248.14 requests per second # 每秒处理 53248.14 次请求
2、企业缓存产品介绍
Memcached:
优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。
缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房 数据同步困难、架构扩容复杂度高
Redis: 优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高
缺点:多线程读写较Memcached慢
新浪、京东、直播类平台、网页游戏
memcache 与redis在读写性能的对比
memcached 适合,多用户访问,每个用户少量的rw
redis 适合,少用户访问,每个用户大量rw
Tair:
优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支
持分布式分片集群、支撑了几乎所有淘宝业务的缓存。
缺点:单机情况下,读写性能较其他两种产品较慢
3 Redis使用场景介绍
- Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景
- Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景
- Redis一般是单机多实例架构,配合redis集群出现
4 Redis 单线程
Redis为什么这么快?
1)误区1:高性能服务器 一定是多线程来实现的, 误区2:多线程 一定比单线程效率高
2)解释
- redis的数据全都在内存里,单线程的去操作效率最高的
- 多线程的本质就是CPU模拟出来多个线程的情况,模拟代价会导致上下文的切换,单对于一个内存的系统来说,它没有上下文的切换就是效率最高的
- redis 用单个CPU绑定一块内存的数据,然后针对这块内存多次读写,都是在一个CPU上完成
例:
一次CPU上下文的切换大概在 1500ns 左右。从内存中读取1MB 的连续数据,耗时大约为 250us,
假设1MB的数据由多个线程读取了1000次,那么就有1000次时间上下文的切换,那么就有1500ns *1000 = 1500us ,
单线程的读完1MB数据才250us ,上下文的切换就用了1500us了,还不算每次读一部分数据的时间
5 Redis部署
yum install centos-release-scl
yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
$ wget http://download.redis.io/releases/redis?6.0.6.tar.gz
$ tar xzf redis-6.0.6.tar.gz
$ cd redis-6.0.6
$ make
启动:
redis-server &
连接测试:
redis-cli
6 常规操作
6.1 在线查看和修改配置
CONFIG GET * # 查看所有配置参数
CONFIG GET requirepass
CONFIG GET r*
CONFIG SET requirepass 123 #在线改配置
6.2 数据库切换
默认16个数据库,类似数组下标从零开始,初始默认使用零号库
查看 redis.conf ,里面有默认的配置
databases 16
127.0.0.1:6379> select 7 #切换数据库
OK
127.0.0.1:6379> dbsize # Dbsize查看当前数据库的key的数量
(integer) 12
Flushdb:清空当前库
Flushall:清空全部的库
6.3 KEY的通用操作
KEYS * keys a keys a* 查看已存在所有键的名字 ****
TYPE 返回键所存储值的类型 ****
EXPIRE\ PEXPIRE 以秒\毫秒设定生存时间 EXPIRE a 100 ; SETEX b bob 200 生成时候指定200S 生存时间
TTL\ PTTL 以秒\毫秒为单位返回生存时间 ***
PERSIST 取消生存时间设置 ***
DEL 删除一个key
EXISTS 检查是否存在 EXISTS a 判断a 是否存在
RENAME 变更KEY名
unlink key 根据value选择非阻塞删除
---例子:
127.0.0.1:6379> set name alex
127.0.0.1:6379> EXPIRE name 60
(integer) 1
127.0.0.1:6379> ttl name
(integer) 57
127.0.0.1:6379> set a bob ex 60
OK
127.0.0.1:6379> ttl bob
(integer) 43 # 剩余多少时间过期
127.0.0.1:6379> PERSIST bob
(integer) 1
127.0.0.1:6379> set name alex
127.0.0.1:6379> set name2 sully
127.0.0.1:6379> keys n*
1) "name2"
2) "name"
127.0.0.1:6379> type name
string
127.0.0.1:6379> EXISTS name
(integer) 1 # 代表 true
127.0.0.1:6379> exists name3
(integer) 0 #代表false
127.0.0.1:6379> TTL name2
(integer) -1 # 永不过期
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)