数据库缓存服务——NoSQL之Redis配置与优化(中)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 一、缓存概念缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较慢的一方起到加速作用,比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据由于硬盘往往不能在短时间内满足CPU的需求,因此CPU缓存、内存、Raid 卡缓存以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU 从缓存读取数据可以大幅提高CPU的工作效率

5.2 redis-benchmark 测试工具

redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。

基本的测试语法:redis-benchmark [选项] [选项值]
 -h:指定服务器主机名。
 -p:指定服务器端口。
 -s:指定服务器 socket
 -c:指定并发连接数。
 -n:指定请求数。
 -d:以字节的形式指定SET/GET值的数据大小。
 -k:l=keep alive 0=reconnect 
 -r:SET/GET/INCR 使用随机key,SADD使用随机值
 -P:通过管道传输<numreg>请求
 -q:强制退出redis,仅显示query/sec值
 --csv:以CSV格式输出
 -l:生成循环,永久执行测试
 -t:仅运行以逗号分隔的测试命令列表
 -I:Idle模式,仅打开N个idle连接并等待
复制代码


示例1:

向IP地址为192.168.72.60、 端口为6379 的Redis 服务器发送100个并发连接与100000 个请求测试性能。

redis-benchmark -h 192.168.72.60 -p 6379 -c 100 -n 100000
复制代码


网络异常,图片无法展示
|


示例2:

测试存取大小为100字节的数据包的性能。

redis-benchmark -h 192.168.72.60 -p 6379 -q -d 100
复制代码


网络异常,图片无法展示
|


示例3:

测试本机上Redis 服务在进行 set 与 lpush 操作时的性能。

redis-benchmark -t set,lpush -n 100000 -q
复制代码


网络异常,图片无法展示
|


六、Redis数据库常用命令


命令 作用
set 存放数据
get 获取数据
keys * 查看所有的key
keys k? 查看k开头后面任意一位的数据
exists 判断键是否存在(存在1,不存在0)
del 删除键
type 查看键对应的value值类型
rename key1 key2 改名,不管key2是否存在都会改名成功。如果存在,key1的值会覆盖key2得值
renamenx key1 key2 改名,若key2不存在,可以改名成功。若key2存在则不进行改名
dbsize 查看当前数据库中key的数目


6.1 set、get 设置和获取键的值

set:存放数据,命令格式为 set key value 
 get:获取数据,命令格式为 get key 
 示例:
 [root@yuji ~]# redis-cli
 127.0.0.1:6379> set teacher lisi
 OK
 127.0.0.1:6379> get teacher
 "lisi"
复制代码


网络异常,图片无法展示
|


6.2 keys 获取键值列表


keys命令可以获取符合规则的键值列表,通常情况可以结合 *、? 等选项来使用。

#先创建几个键
 127.0.0.1:6379>set k1 1
 127.0.0.1:6379>set k2 2
 127.0.0.1:6379>set k3 3 
 127.0.0.1:6379>set v1 4 
 127.0.0.1:6379>set v5 5
 127.0.0.1:6379>set v22 6
 127.0.0.1:6379>set v33 7
 127.0.0.1:6379>keys *     #查看当前数据库中所有键
 127.0.0.1:6379>keys v*    #查看当前数据库中以v开头的键
 127.0.0.1:6379>keys v?    #查看当前数据库中以v开头,后面包含任意一位字符的键
 127.0.0.1:6379>keys v??   #查看当前数据库中以v开头,后面包含任意两位字符的键
复制代码


网络异常,图片无法展示
|


6.3 exists 判断键是否存在

exists 命令可以判断键是否存在。

返回1,表示键存在。

返回0,表示键不存在。

127.0.0.1:6379> exists teacher  #判断teacher键是否存在,返回1表示存在
 (integer) 1
 127.0.0.1:6379> exists student  #判断studen键是否存在,返回0表示存在
 (integer) 0
复制代码


网络异常,图片无法展示
|


6.4 del 删除键

del 命令可以删除当前数据库的指定key。

127.0.0.1:6379> get k1
 "1"
 127.0.0.1:6379> del k1     #删除k1键
 (integer) 1
 127.0.0.1:6379> get k1
 (nil)
 127.0.0.1:6379> exists k1   #k1键已不存在
 (integer) 0
复制代码


网络异常,图片无法展示
|


6.5 type 查看键存储的数据类型

type 命令可以获取 key 对应的 value 值类型。

127.0.0.1:6379> get k2
 "2"
 127.0.0.1:6379> type k2
 string                      #字符串类型
复制代码


网络异常,图片无法展示
|


6.6 rename 重命名

rename 命令是对已有 key 进行重命名。(覆盖)

  • 使用rename命令进行重命名时,无论目标key是否存在都会进行重命名,且源key的值会覆盖目标key的值。
  • 在实际使用过程中,建议先用exists命令查看目标key 是否存在,然后再决定是否执行rename 命令,以避免覆盖重要数据。
命令格式: rename 源key 目标key
复制代码


示例:

127.0.0.1:6379> keys *
  1) "k3"
  2) "v1"
  3) "v33"
  4) "v5"
  5) "mylist"
  6) "v22"
  7) "teacher"
  8) "key:__rand_int__"
  9) "counter:__rand_int__"
 10) "k2"
 11) "myset:__rand_int__"
 127.0.0.1:6379> rename v33 v30    #将键v33重命名为v30
 OK
 127.0.0.1:6379> keys *
  1) "k3"
  2) "v1"
  3) "v30"
  4) "v5"
  5) "mylist"
  6) "v22"
  7) "teacher"
  8) "key:__rand_int__"
  9) "counter:__rand_int__"
 10) "k2"
 11) "myset:__rand_int__"
复制代码


网络异常,图片无法展示
|


6.7 renamenx 会检查目标键名是否已存在

renamenx 命令的作用是对已有key进行重命名,并检测新名是否存在,如果目标key存在则不进行重命名。(不覆盖)

127.0.0.1:6379> keys *
  1) "k3"
  2) "v1"
  3) "v30"
  4) "v5"
  5) "mylist"
  6) "v22"
  7) "teacher"
  8) "key:__rand_int__"
  9) "counter:__rand_int__"
 10) "k2"
 11) "myset:__rand_int__"
 127.0.0.1:6379> renamenx v1 k3     #因为k3键存在,所以重命名不成功。返回0表示执行不成功。
 (integer) 0
 127.0.0.1:6379> renamenx v1 v100     #重命名成功。返回1表示成功。
 (integer) 1                        
 127.0.0.1:6379> keys *
  1) "k3"
  2) "v100"
  3) "v30"
  4) "v5"
  5) "mylist"
  6) "v22"
  7) "teacher"
  8) "key:__rand_int__"
  9) "counter:__rand_int__"
 10) "k2"
 11) "myset:__rand_int__"
复制代码


网络异常,图片无法展示
|

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
25天前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
53 8
|
4天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
5天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
18 4
|
7天前
|
SQL druid 数据库
如何进行数据库连接池的参数优化?
数据库连接池参数优化包括:1) 确定合适的初始连接数,考虑数据库规模和应用需求;2) 调整最大连接数,依据并发量和资源状况;3) 设置最小空闲连接数,平衡资源利用和响应速度;4) 优化连接超时时间,确保系统响应和资源利用合理;5) 配置连接有效性检测,定期检查连接状态;6) 调整空闲连接回收时间,适应访问模式并配合数据库超时设置。
|
15天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
24 7
|
11天前
|
SQL 缓存 监控
数据库优化
【10月更文挑战第29天】数据库优化
23 1
|
15天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5
|
12天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
33 1
|
14天前
|
XML Java 数据库连接
如何使用HikariCP连接池来优化数据库连接管理
在Java应用中,高效管理数据库连接是提升性能的关键。本文介绍了如何使用HikariCP连接池来优化数据库连接管理。通过引入依赖、配置参数和获取连接,你可以显著提高系统的响应速度和吞吐量。 示例代码展示了从配置到使用的完整流程,帮助你轻松上手。
51 3
|
13天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
69 1

热门文章

最新文章