235_Redis_概述_常规操作

网友投稿 731 2022-05-29

235_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 # 永不过期

Redis 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RabbitMQ萌新入门简介
下一篇:docker 命令列表总结(参考官方)
相关文章