• [技术干货] redis为啥这么快
     1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。        2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。        3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。        4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。        5. 还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
  • [交流吐槽] redis缓存
    数据发生了变更,先删除了缓存,然后要去修改数据库,此时还没修改。一个请求过来,去读缓存,发现缓存空了,去查询数据库,**查到了修改前的旧数据**,放到了缓存中。随后数据变更的程序完成了数据库的修改。完了,数据库和缓存中的数据不一样了
  • [技术干货] redis存储的数据类型
    string(字符串)​    list(列表)​    hash(哈希)​    set(集合)​    zset(有序集合)
  • [技术干货] Redis的淘汰策略
    Redis提供了6种的淘汰策略,其中默认的是noeviction,这6中淘汰策略如下:noeviction(默认策略):若是内存的大小达到阀值的时候,所有申请内存的指令都会报错。allkeys-lru:所有key都是使用LRU算法(最近最少使用)进行淘汰。volatile-lru:所有设置了过期时间的key使用LRU算法进行淘汰。allkeys-random:所有的key使用随机淘汰的方式进行淘汰。volatile-random:所有设置了过期时间的key使用随机淘汰的方式进行淘汰。volatile-ttl:所有设置了过期时间的key根据过期时间进行淘汰,越早过期就越快被淘汰。
  • [数据库] 【第29课】不容错过!华为云新一代缓存“大咖”——云数据库 GeminiDB Redis
    众所周知,Redis是一款开源的key-value数据库。与其他的key-value缓存产品相比,因其具有性能高、数据结构丰富等优势而得到广泛使用。然而,随着业务发展,Redis所承载的数据量不断增长,业务类型不断丰富,开源Redis的痛点也逐渐暴露出来。今天就来介绍一位缓存“大咖”——云数据库 GeminiDB Redis。这款云数据库直击开源Redis的痛点,采用计算存储分离架构,不仅完全兼容Redis协议,而且突破了开源Redis的内存限制,通过将数据进行冷热分离,在保证热数据驻留内存的同时,将冷数据置换入分布式存储池进行持久化存储,最大程度的降低使用成本。想要了解更多云数据库 GeminiDB Redis架构及原理,猛戳这里下面来看看云数据库 GeminiDB Redis是如何解决开源Redis的痛点问题的。   总结:GeminiDB Redis 在高度兼容开源Redis协议,保证足够性能的前提下,有效解决了开源Redis的痛点问题,提供了低成本、大容量、强一致、高可靠、高可用的NoSQL数据存储服务。如果您想选择一款性价比高的内存数据库,那么云数据库 GeminiDB Redis则为首选。接下来看看云数据库 GeminiDB Redis的典型应用场景。   好了,本期关于GeminiDB Redis的内容就介绍到这里了,相信您已经对GeminiDB Redis了然于心。如果您想要马上使用GeminiDB Redis,请戳这里如果您想要获得更多文档帮助,请戳这里下期预告:GeminiDB Redis之实例购买连接篇,不见不散~
  • [问题求助] 【香港启德项目】【redis功能】SmartCampus__DevRedis报错,无法使用
    【功能模块】redis功能【操作步骤&问题现象】1、打开管理->应用管理->连接器->redis 测试SmartCampus__DevRedis2、报错 redis error, cannot finish cmd [PING], last err rpc error: code = DeadlineExceeded desc = context deadline exceeded【截图信息】【日志信息】(可选,上传日志内容或者附件)顾庆耀/18068848554/guqingyao@chinasoftinc.com
  • [技术干货] 原生Redis突现时延抖动,谁的锅?
    原生Redis突现时延抖动,谁在搞鬼?也许是fork问题找上门了!fork可以对业务造成业务抖动、内存利用率低、容量规模小等影响,对业务危害巨大。但是不用慌,华为云GaussDB(for Redis)已经杜绝了fork隐患,全方位为您的业务保驾护航!现在体验还可以享受5折优惠:https://activity.huaweicloud.com/dbs_Promotion/index.html#section-7
  • [openEuler] 在openEuler操作系统上部署nginx
    在openEuler操作系统上部署nginx
  • [产品介绍] 注意,开源Redis被爆高危漏洞,攻击者可远程注入代码
    2021年7月22日,Redis官方和开源Redis社区先后发布公告,披露了CVE-2021-32761 Redis(32位)远程代码执行漏洞。在32位Redis中,攻击者在Redis存在未授权访问的情况下可利用*BIT*命令与proto-max-bulk-len配置参数可能造成整形溢出,最终导致远程代码执行,本次漏洞等级为高危级别。需要说明的是,本次开源Redis的安全漏洞并不影响现网华为云GaussDB(for Redis)的任何实例,已经在使用华为云GaussDB(for Redis)的用户请继续放心使用。通过本次漏洞可以发现,开源Redis对BITFIELD等命令的代码实现上存在问题,导致了对string数据类型的操作存在安全隐患。随时可能被恶意触发整形溢出BUG,甚至还会被恶意执行远程代码。因此,给了黑客可乘之机。本次漏洞的代码修复已经发布,官方建议用户尽快升级到开源Redis6.2.5, 6.0.15, 5.0.13这三个安全版本。那么,对于此类数据库安全漏洞该如何防患于未然呢?数据库漏洞属于软件漏洞中的一种,主要是被用来突破系统的安全策略。数据库漏洞往往会影响很大一个范围,除了影响数据库自身,还包括数据库所在操作系统和数据库所在局域网的整体安全。通常来说,防范和补救措施有:1. 紧跟官方通知,排查并升级数据库到安全版本。本次漏洞事件中,开源Redis用户应第一时间完成升级;2. 若短时无法升级,则从服务端开启访问限制,禁用危险命令;3. 通过白名单访问IP等安全策略,提高入侵难度;4. 选择可靠的云服务厂商,比如迁移至华为云数据库GaussDB(for Redis),可全方位保障数据的安全可靠。华为云GaussDB(for Redis)从源头杜绝安全漏洞1.全新数据编码更安全:华为云数据库GaussDB(for Redis)采用先进存算分离架构,兼容Redis协议,提供海量数据的持久化存储。在代码实现上完全自研,采用全新数据编码,更高效,空间使用率也更高。内部每种命令的实现并不依赖开源Redis,因此,不会受到类似本次开源Redis安全漏洞的影响。2.安全防护体系全面保障:基于华为云可靠的现网安全体系,使用GaussDB(for Redis)的用户可以随时制定自己的白名单IP访问策略。还可以通过虚拟私有云、子网、安全组、DDoS防护以及SSL安全访问等多层安全防护体系,有力地抗击各种恶意攻击,保证数据安全,不给未知来源的恶意访问留有任何机会。上云无忧,GaussDB(for Redis)提供一站式迁移服务华为云数据库GaussDB(for Redis)是一款完全自研的旗舰产品,是支持Redis协议的NoSQL数据库,而不是缓存。与开源Redis最大的区别是,它具备存算分离架构,提供强大的数据存储能力,包括强一致、弹性扩缩容等高级特性。GaussDB(for Redis)为用户带来了更低成本、更大容量、更高可靠、且弹性伸缩的极佳产品体验。对于正在使用开源Redis2.6以上各版本的用户,GaussDB(for Redis)还提供了一站式的迁移服务,无需技术门槛,操作简单快捷,仅需分钟级就能搭建起迁移任务,让整个环境搭建“高效快速”,为企业上云保驾护航,再无安全之忧。伴随数据价值的不断提升,作为海量数据的载体,数据库所需面对的安全隐患和风险也水涨船高,但无论是DBA还是云服务厂商都应该树立良好的安全意识,才能更好的保障数据库安全。华为云数据库将持续满足不同数据库的安全防护需求,为数据库及数据安全建设发展提供有力支撑,让用户对数据使用更自由、更安全!
  • [问题求助] 【弹性云服务器产品】【安装软件功能】安装redis后,redis不能用
    【功能模块】在鲲鹏云服务器 centos里 安装redis【操作步骤&问题现象】1、yum install redis2、systemctl restart redis3. 结果redis服务启动不起来,【截图信息】【日志信息】(可选,上传日志内容或者附件)7月 23 14:51:32 ecs-351d-0003 systemd[1]: Starting Redis persistent key-value database...-- Subject: redis.service 单元已开始启动-- Defined-By: systemd-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- redis.service 单元已开始启动。7月 23 14:51:32 ecs-351d-0003 systemd[1]: redis.service: Main process exited, code=exited, status=217/USER-- Subject: Unit process exited-- Defined-By: systemd-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- An ExecStart= process belonging to unit redis.service has exited.-- -- The process' exit code is 'exited' and its exit status is 217.7月 23 14:51:32 ecs-351d-0003 systemd[1]: redis.service: Failed with result 'exit-code'.-- Subject: Unit failed-- Defined-By: systemd-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel-- -- The unit redis.service has entered the 'failed' state with result 'exit-code'.7月 23 14:51:32 ecs-351d-0003 systemd[1]: Failed to start Redis persistent key-value database.-- Subject: redis.service 单元已失败
  • [openEuler] 基于openEuler-20.03-LTS-SP1安装部署Redis-3.0.0
    部署说明本文以root权限执行以下操作,如非root权限用户可加sudo后或切换root权限用户执行命令。一、基础环境属性说明OSopenEuler-20.03-LTS-SP1CPU架构x86_64/aarch64规格4C/8G/40G二、确认架构环境以X86架构为例,执行如下命令查看操作系统及系统架构:cat /etc/*-release arch三、安装Redis-3.0.0步骤Redis部署方式主要分为三种,分别为:yum源、rpm包、源码编译安装。如下图,openEuler-20.03-LTS-SP1通过yum方式安装redis的版本为4.0.11,本部署文档以源码编译安装Redis-3.0.0。①查找Redis-3.0.0源码包https://download.redis.io/releases/②源码编译安装#下载redis-3.0.0源码 wget https://download.redis.io/releases/redis-3.0.0.tar.gz③解压源码包tar -xzf redis-3.0.0.tar.gz 或 tar -xzvf redis-3.0.0.tar.gz③安装依赖yum -y install gcc gcc-c++ kernel-devel④进入redis-3.0.0目录,编译rediscd redis-3.0.0 make编译完成后,src目录下生成了一些二进制文件。⑤安装redis到指定目录make PREFIX=/usr/local/redis install⑥拷贝redis配置文件,并配置redis后台启动及配置密码mkdir /usr/local/redis/etc/ cp redis.conf /usr/local/redis/etc/ vi /usr/local/redis/etc/redis.conf daemonize yes requirepass Redis12#$ # 保存退出⑦配置环境变量vi /etc/profile export PATH="$PATH:/usr/local/redis/bin" # 保存退出 # 让环境变量立即生效 source /etc/profile⑧设置开机自启动#将Redis启动脚本放置“/etc/init.d/”目录下 cp /utils/redis_init_script /etc/init.d/redis #修改配置文件 vi /etc/init.d/redis PASS=Redis12#$ EXEC=/usr/local/redis/bin/redis-server CLIEXEC=/usr/local/redis/bin/redis-cli PIDFILE=/var/run/redis.pid CONF="/usr/local/redis/etc/redis.conf" #增加密码验证 $CLIEXEC -p $REDISPORT -a $PASS shutdown #保存退出 # 给脚本增加运行权限 chmod +x /etc/init.d/redis【问题解决】chkconfig redis on #提示错误 service redis does not support chkconfig vi /etc/init.d/redis #把下面两行注释放在/etc/init.d/redis文件靠前的注释中: # chkconfig: 2345 90 10 # description: Redis is a persistent key-value database chkconfig redis on chkconfig --list四、测试验证①启动测试systemctl start redis #或者 /etc/init.d/redis start systemctl stop redis #或者 /etc/init.d/redis stop # 查看redis进程 ps -ef|grep redis # 端口查看 netstat -antlp|grep 6379②查看redis-server及redis-cli版本redis-server -v redis-cli -v③登入redis客户端,创建测试key-value至此,在openEuler-20.03-LTS-SP1上面源码编译安装redis-3.0.0完成。
  • [openEuler] 基于openEuler-20.03-LTS-SP1安装部署Redis 3.2.9
    介绍REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。安装部署说明openEuler-20.03-LTS-SP1通过yum方式安装redis的版本为4.0.11,如果用户需要安装指定版本的redis就需要通过源码编译或者指定版本的rpm包方式进行安装。本次我以Redis 3.2.9源码编译安装部署的方式进行说明。环境要求属性说明OSopenEuler-20.03-LTS-SP1CPU架构x86_64/aarch64规格4C/8G/40G确认架构环境cat /etc/os-release uname -ix86架构:arm架构:说明:采用源码编译安装的方式,以下的操作步骤在x86架构与arm架构是相同,就不多加赘述。如果是采用rpm包的方式安装,则需要找相应架构的rpm包进行安装。安装环境依赖yum install wget tar net-tools源码编译安装下载redis-3.2.9源码wget https://download.redis.io/releases/redis-3.2.9.tar.gz解压源码包tar -xzvf redis-3.2.9.tar.gz进入redis-3.2.9/deps目录,编译redis依赖库cd redis-3.2.9/deps/ make -j4 hiredis lua jemalloc linenoise编译rediscd .. make -j 4 make install建立redis配置文件cp redis.conf /usr/local/etc/配置redis后台启动vim /usr/local/etc/redis.conf daemonize yes将Redis启动脚本放置“/etc/init.d/”目录下cp /root/redis-3.2.9/utils/redis_init_script /etc/init.d/redis修改脚本vim /etc/init.d/redis CONF="/usr/local/etc/redis.conf"设置开机自启动并运行redis服务systemctl enable redis systemctl start redis systemctl status redis测试验证查看redis版本redis-server -v查看redis CLI版本redis-cli -v使用redis-cli连接server,并执行key-value请求为了保证安全性,为redis设置密码vim /usr/local/etc/redis.conf requirepass openeuler12#$重启redis服务再通过密码登陆验证至此,在openEuler-20.03-LTS-SP1上面源码编译安装redis3.2.9完成。
  • [问题求助] FunctionGraph的Sandbox本地中函数如何访问Redis?
    在Sandbox中函数如何访问Redis?是不是不能访问本地启动的Redis服务?
  • [调优工具] 【Hyper Tuner 调优实践 24】基于系统性能调优工具的KVM虚拟机场景的Redis仿存统计分析调优实践
    1      调优概述鲲鹏性能分析工具是一款针对鲲鹏平台的性能调优工具,包含系统性能分析、Java性能分析和诊断调试分析三大功能。本调优实践使用的是系统性能分析,针对在虚拟机上部署的Redis性能不高问题,通过执行访存分析任务,找到性能瓶颈和问题点,并根据分析结果进行优化,从而实现Redis数据库性能的提高。2      组网环境表2-1服务器类型KVM虚拟机(基于TaiShan 200服务器(型号2280)部署)配置信息4U8G100GOSCentOS 7.6(内核:4.14.0-115.el7a.0.1.aarch64)应用Redis 5.0性能测试工具redis-benchmark(Redis自带工具)说明: 本实践环境配置信息只用作举例,在其他环境上相关操作类似。3      前提条件  服务器和操作系统正常运行。  目标环境(服务器)上3.T10版本工具已经安装完成,并正常运行。  目标环境(服务器)上已安装好数据库和性能测试工具。4      调优思路  启动Redis数据库服务,使用redis-benchmark工具对数据库进行加压测试。检查压测结果,发现性能指标不是很高。  重新运行压测,同时使用Hyper Tuner工具的访存分析,以整个系统作为采集分析对象创建任务,采样类型全部勾选,根据分析任务分析结果进行分析,根据已有的调优经验或手段进行调优。  重新运行压测工具,检查性能是否得到提升。5      调优过程5.1      执行压测  1.启动Redis数据库服务。        2.使用自带的压测工具在本地对数据库进行压力测试。压测参考命令如下图所示(没有指定特定的压测项,会对所有项进行压测),指定-c 50个并发,-n 10万个请求,-q 只打印最后结果。      3. 检查压测结果通过对压测结果的数据进行分析,发现性能并不是很高,没有达到预期的结果。根据Redis的特点是基于内存的数据库,使用系统性能分析工具的访存分析能力尝试对数据库性能进行分析,找出性能问题点。表5-1类型RPS(requests per second)PING_INLINE47915.67PING_BULK53022.27SET67069.08GET60606.06INCR62073.25LPUSH72463.77RPUSH69300.07LPOP68493.15RPOP70126.23SADD67294.75HSET71633.23SPOP61236.99LPUSH (needed to benchmark LRANGE)72992.70LRANGE_100 (first 100 elements)29859.66LRANGE_300 (first 300 elements)14432.10LRANGE_500 (first 450 elements)10914.65LRANGE_600 (first 600 elements)8775.78MSET (10 keys)72046.11 5.2     执行访存分析1.在后台使用相同的压测参数执行压测,同时在性能分析工具上创建访存分析任务,配置参数如下图所示,利用访存统计分析,检查系统缓存访问和DDR访问情况。 2.任务执行完成后检查任务结果。**在“总览”界面通过查看Core Cache Miss平均值,发现相关指标的值都比较高;而iCache Bandwidth和dCache Bandwidth平均值不是很高,与理论带宽有一定差距。**在“访存访问”页面,可以看到L1D和L2D的带宽也不是很高,对应的L1D命中率在0.98,L2D的命中率在0.82左右。**在“DDR访问”页面可以看到,DDR访问中存在较多的跨DIE访问,相对于本地访问次数的占比超过了50%。总览结果页面:访存访问结果页面:DDR访问结果页面:  3.通过以上访存分析结果,再根据当前服务器类型使用的是虚拟机。分析可能原因:部署的虚拟机的方式,在默认情况下不同虚拟机的vCPU可能运行在相同物理CPU核上,会造成CPU资源竞争,同一个虚拟机在不同时间也可能会运行在不同的物理核上,会造成cache miss的情况。另外也可能出现虚拟机内存访问出现跨die和跨片情况。针对以上情况,可进行的调优手段是,对虚拟机的vCPU进行绑核,绑到同一个NUMA节点上,同时可以将虚拟机内存访问绑到对应的NUMA节点上,可避免出现内存跨die和跨片情况。 5.3       性能优化1、检查虚拟机的配置文件。发现使用的是默认配置,配置文件里的确没有绑核和绑定内存访问的相关配置项。2.手动进行配置项修改,在宿主机上修改虚拟配置文件(命令:virsh edit 虚拟机domian)。在配置文件里配置<numatune>和<cputune>选项,配置项参考如下:  <cputune>    <vcpupin vcpu='0' cpuset='50'/>    <vcpupin vcpu='1' cpuset='51'/>    <vcpupin vcpu='2' cpuset='52'/>    <vcpupin vcpu='3' cpuset='53'/>    <emulatorpin cpuset='50-53'/>  </cputune>  <numatune>    <memory mode='strict' nodeset='1'/>  </numatune>将虚拟机的vCPU核绑到对应的物理机的50-53核上,这些物理核所在的NUMA节点为node1,因此将虚拟机的内存访问同时绑到node1这个节点上,模式采用“strict”严格从指定node上申请内存。修改后保存并退出。3、关掉虚拟机(命令:virsh shutdown 虚拟机domian),再重启虚拟机(命令:virsh start 虚拟机domian)。5.4     再次执行访存分析和压测 1.执行访存分析(同时运行压测),查看结果。总览结果界面:Core Cache Miss平均值,发现相关指标的值相比调优前有所降低;而iCache Bandwidth和dCache Bandwidth平均值有所提高。缓存访问结果页面:可以看到L1D带宽有所提高,对应的L1D命中率在0.98,L2D带宽和命中率略有下降,说明CPU cache使用集中在L1上。DDR访问结果页面:DDR访问中,跨片访问次数极低,读DDR跨DIE访问相对本地访问占比在15%,写DDR跨DIE访问也极低。  2.重新单独执行压测。表5-2类型RPS(requests per second)PING_INLINE65104.17PING_BULK62539.09SET71479.62GET65659.88INCR72046.11LPUSH77279.75RPUSH74906.37LPOP75872.54RPOP71839.09SADD71275.84HSET75872.54SPOP66800.27LPUSH (needed to benchmark LRANGE)77101.00LRANGE_100 (first 100 elements)30959.75LRANGE_300 (first 300 elements)14619.88LRANGE_500 (first 450 elements)11106.18LRANGE_600 (first 600 elements)8823.79MSET (10 keys)72833.21    通过测试的结果可以看到性能数据有所提升。  6. 实践结论1.性能结果对比表6-1类型RPS(requests per second)性能对比调优前调优后PING_INLINE47915.6765104.17+35.9%PING_BULK53022.2762539.09+17.9%SET67069.0871479.62+6.6%GET60606.0665659.88+8.3%INCR62073.2572046.11+16.1%LPUSH72463.7777279.75+6.6%RPUSH69300.0774906.37+8.1%LPOP68493.1575872.5410.1%RPOP70126.2371839.092.4%SADD67294.7571275.84+5.9%HSET71633.2375872.54+5.9%SPOP61236.9966800.27+9.1%LPUSH (needed to benchmark LRANGE)72992.7077101.00+5.6%LRANGE_100 (first 100 elements)29859.6630959.75+3.7%LRANGE_300 (first 300 elements)14432.1014619.88+1.3%LRANGE_500 (first 450 elements)10914.6511106.18+1.8%LRANGE_600 (first 600 elements)8775.788823.79+0.5%MSET (10 keys)72046.1172833.21+1.1%通过调优前后性能数据的对比,每一个压测指标项的性能都得到了不同程度的提升。整体性能的提升达到了+8.16%,说明优化的效果是比较明显的。   2.总结本次调试实践,主要是针对在虚拟机平台上利用Hyper Tuner系统性能分析工具的访存分析能力对Redis数据库性能不高问题的分析。根据分析结果发现的问题进行分析,并利用已有的相关调优经验实施调优,最终使性能得到了较大的提升。
  • [问题求助] 【智慧园区appcube]- 默认的redis连接器不可用
    使用应用魔方的默认redis连接器,提示报错,该redis为系统自带的【截图信息】
总条数:550 到第 页
上滑加载中