利用redis怎么从数据库找到数据?根据什么找的?
僪维运
2022-02-11 15:32:06
共 5 个回答
陈训善
2022-02-15 21:11:00
Redis,是一个内存存储的非关系数据库,支持字符串、列表、集合、散列表、有序集合五类存储类型。
先看怎么使用
启动redis-cli客户端
执行"set name wukong",将name的值设为
执行"get name", 返回"wukong"
根据key(即“name”)返回value("wukong")
是不是有点类似python的内置dict数据类型,猜测底层算法应该是类似Hash Map原理。
再说算法实现原理
看了下Redis的官方文档,没有讲到内部的算法原理,只得翻github的源代码,稍微浏览了下,是用C语言实现的,代码结构很清晰,代码量也很紧凑。
除了client/server和cluster(集群的代码),答案应该在'dict.h'和'dict.c'两个文件:
This file implements in memory hash tables with insert/del/replace/find/ get-random-element operations. Hash tables will auto resize if needed tables of power of two in size are used, collisions are handled by chaining。简单点说,我觉得redis可以看成是一个分布式的Hash Table,算法上基于分布式集群和HashMap原理(或其变形、扩展)实现的,应该是对key-value模式进行了扩展,提供快速的数据操作GET/SET/DEL等、支持数据持久化。
如果再想了解更具体细节的话,读src目录下的C源码吧。
张宇涵
2022-02-17 12:18:45
Redis 是用C语言编写的内存数据库,分Redis Server和Redis Client,是一款非常高效的数据缓存组件,在我们日常开发中经常用到,你可以将它理解成数据库,但不是我们平常用的关系型数据库,Redis有数据库的概念,但没有表一说。
Redis在数据存储时,是以Key-Value形式存储的,Value可以是String(字符串)、List(列表)、Set(集合)、ZSet(有序集合)、Hash(哈希表)中任意一种,所以从Redis中取数据时还是要根据Key取。
下面通过一款优秀的GUI工具(Redisclient)了解其数据存储,Redisclient请从Github下载,下载后是个压缩包。
然后进入release:
在cmd命令窗口,执行以下命令打开。
java -jar redisclient-win32.x86_64.2.0.jar1、连接Redis Server
填写主Redis Server部署主机IP和端口(安装后默认是6379)
连接成功后,左侧显示db0-db15,一共16个数据库,默认数据写在db0中,也可以选择(select N)。
2、往Redis里写数据
选择db0,右键新建,我们选择字符串,填写键(testKey)和值(testValue),然后点确定,此时数据就保存进Redis了,如果要查看的话,在db0下找着testKey,右侧数据库显示出来了。
除了字符串,还可以通过Redis Client操作哈希表、列表等等,是不是觉得非常简单,如果看了还有不明白的地方,请在评论区留言互动,谢谢!
唐小雨
2022-02-19 09:39:34
redis是一个内存数据库,也是一个key-value键值对数据库,根据key获取value。
蔡晓瑞
2022-02-21 11:27:17
看问题描述,不太明确你的意思。按照我对你问题的理解说一下。
1.如果说redis查询方式,redis本身是key value结构存取数据,所以用get key这样就可以取出数据,存用set key value
2.如果说利用redis做缓存,帮助快速查询数据库,可以将数据库中的主健作为redis的key,value可使用数据库的行记录存入redis中,查询时按主健get即可。
谌玉龙
2022-02-21 01:17:36
redis相当于数据库的缓存,会把经常查询的数据放到redis中,因为redis用到了内存,而且不用每次都查询数据库,所以速度更快,假如redis中没有用户要查询的数据时,就会从数据库查询然后放到redis中,redis会根据查询次数的多少进行排序,把很少查询的数据从缓存中删除。
阅读原文