当前位置: 首页 > 科技观察

一起来了解一下Redis的爱恨吧

时间:2023-03-17 20:33:16 科技观察

Redis是一个key-value存储系统,也是一个跨平台的非关系型数据库。Redis是一个开源的,用ANSIC语言编写,遵守BSD协议,支持网络,可以基于内存,分布式,可选持久化键值对(Key-Value)存储的数据库,并提供多种语言的API.Redis通常被称为数据结构服务器,因为值可以是字符串、哈希、列表、集合和排序集合等类型。redis安装介质在:https://github.com/tporadowski/redis/releases下载,运行得到运行路径。修改redis.windows-service.conf文件,一个是端口,一个是密码认证#bind127.0.0.1#把这句话注释掉,这样redis就可以访问6379端口了#默认端口可以改成其他端口protected-modeyes#改成yes,开启保护模式,默认yes#daemonizeno#这句话是注释,windows版本不支持,默认norequirepass123456#密码appendonlyyes在指定目录下,运行redis#FailedtostartredisCouldnotcreateserverTCPlisteningsocket127.0.0.1:6379:bind:Theoperationissuccessful操作方法:redis命令,setkey,value上面提到的字符串(String),散列(Hash),列表(list),set(集合)和sortedsets等类型,具体操作并不复杂C:\ProgramFiles\Redis>redis-cli.exe-h127.0.0.1-p6379127.0.0.1:6379>pingPONG127.0.0.1:6379>setkey1v1OK127.0.0.1:6379>getkey1"v1"127.0.0.1:6379>getkey(nil)127.0.0.1:6379>设置名称"wbq"OK127.0.0.1:6379>获取名称“wbq”127.0.0.1:6379>设置名称“whp”OK127.0.0.1:6379>获取名称“whp”127.0.0.1:6379>删除名称(整数)1127.0。0.1:6379>hmset名称字段1"wbq"field2"whp"OK127.0.0.1:6379>hget名称字段1"wbq"127.0.0.1:6379>hgetnamefield2"whp"127.0.0.1:6379>lpushalistredis(整数)1127.0.0.1:6379>lpushalistdb2(整数)2127.0.0.1:6379>lpushalistmysql(整数)3127.0.0.1:6379>lrangealist021)"mysql"2)"db2"3)"redis"127.0.0.1:6379>lrangealist011)"mysql"2)"db2"127.0.0.1:6379>saddasetset1(整数)1127.0.0.1:6379>saddasetset2(error)MISCONFRedis配置为保存RDB快照,但目前无法持久保存在磁盘上。可能修改数据集的命令被禁用,因为此实例配置为在RDB快照失败时在写入期间报告错误(stop-writes-on-bgsave-error选项)。RDB错误请查看Redis日志。127.0.0.1:6379>saddasetset3(error)MISCONFRedis被配置为保存RDB快照,但目前无法在磁盘上持久化。可能修改数据集的命令被禁用,因为此实例配置为在写入期间报告错误,如果R数据库快照失败(stop-writes-on-bgsave-error选项)。RDBerror详情请查看Redis日志。127.0.0.1:6379>saddasetset3[member...]reportedanothererror,(error)MISCONFRedis配置为保存RDB快照,但目前无法保存保留在磁盘上。可能修改数据集的命令被禁用,因为此实例配置为在RDB快照失败时在写入期间报告错误(stop-writes-on-bgsave-error选项)。有关RDB错误的详细信息,请检查Redis日志。大意是不能持久化写入磁盘。配置127.0.0.1:6379>configsetstop-writes-on-bgsave-errornoOK127。0.0.1:6379>saddasetset2(整数)1127.0.0.1:6379>saddasetset3(整数)1127.0.0.1:6379>saddasetset4(整数)1127.0.0.1:6379>saddasetset2(整数)0127.0。0.1:6379>smembersaset1)"set4"2)"set3"3)"set1"4)"set2"127.0.0.1:6379>查看服务器错误日志,大意是没有写权限[34752]274月11日:50:16.328#分叉操作完成[34752]4月27日11:50:16.340#后台保存错误[34752]27Apr11:50:22.046*900秒内发生1次更改。节省...[34752]27Apr11:50:22.115*Backgroundsavingstartedbypid7944[7944]27Apr11:50:22.251#FailedopeningtheRDBfiledump.rdb(inserverrootdirC:\ProgramFiles\Redis)forsaving:数据无效[7944]27Apr11:50:22.253#rdbSave在qfork中失败:权限被拒绝[34752]27Apr11:50:22.325#fork操作完成[34752]27Apr11:50:22.338#后台保存错误[34752]4月27日11:50:28.046*900秒内发生1次更改。节省...[34752]27Apr11:50:28.112*Backgroundsavingstartedbypid20004[20004]27Apr11:50:28.229#FailedopeningtheRDBfiledump.rdb(inserverrootdirdirC:\ProgramFiles\Redis)forsaving:数据无效。[20004]27Apr11:50:28.231#rdbSavefailedinqfork:Permissiondenied更改文件夹的读写权限后,一切正常[34752]27Apr11:50:28.326#forkoperationcomplete[34752]27Apr11:50:28.343#Backgroundsavingerror[34752]27Apr11:50:34.060*900秒内发生1次更改。节省...[34752]27Apr11:50:34.126*后台保存由pid32840[34752]27Apr11:50:34.339#forkoperationcomplete[34752]27Apr11:50:34.383*后台保存成功终止继续执行各种类型的键值操作。127.0.0.1:6379>zadd分类集0redis(整数)1127.0.0.1:6379>zadd分类集1db2(整数)1127.0.0.1:6379>zadd分类集0sqlserver(整数)1127.0.0.1:6379>zrangedbyscore)“redis”2)"sqlserver"3)"db2"127.0.0.1:6379>Redis支持多数据库,每个数据库的数据都是孤立的,不能共享,而且是基于单机的。如果是集群,就没有数据库的概念。Redis是一个字典结构的存储服务器。实际上,一个Redis实例提供了多个字典来存储数据,客户端可以指定将数据存储在哪个字典中。这类似于众所周知的关系数据库实例中可以创建多个数据库的事实,因此每个字典里面可以理解为一个独立的数据库。每个数据库外部命名,编号从0开始递增。Redis默认支持16个数据库(更多可以通过配置文件支持,没有上限),这个数量可以通过配置数据库修改。客户端与Redis建立连接后,会自动选择0号数据库,但你可以随时使用SELECT命令更改数据库。如果要选择数据库1:127.0.0.1:6379>select1OK127.0.0.1:6379[1]>getkey1(nil)127.0.0.1:6379[1]>zrangebyscoreasortedset05(空列表或集合)127.0.0.1:6379[1]>选择0OK127.0.0.1:6379>zrangebyscoreasortedset051)"redis"2)"sqlserver"3)"db2"127.0.0.1:6379>选择2OK127.0.0.1:6379[2]>zrangebyscoreasortedset05(emptylistorset)127.0.0.1:6379[2]>其实我真正的目的是实现一个最近24小时数据的队列,保证数据是连续的rolling,建一个listlistkeyvalue,通过rpush写入24条记录,查看数据,实现一个连续lpop和rpush的queue,现在缺的也是元数据。127.0.0.1:6379>deluserdaydata:username:user1:data(integer)1127.0.0.1:6379>rpushuserdaydata:username:user1:data01234567891011121314151617181920212223(整数)24127.0.0.1:6379>lrangeuserdaydata:username:user1:data0231)"0"2)"1"3)"2"4)"3"5)"4"6)"5"7)"6"8)"7"9)"8"10)"9"11)"10"12)"11"13)"12"14)"13"15)"14"16)"15"17)"16"18)"17"19)"18"20)"19"21)"20"22)"21"23)"22"24)"23"127.0.0.1:6379>lpopuserdaydata:username:user1:data"0"127.0.0.1:6379>lrangeuserdaydata:username:user1:data0231)"1"2)"2"3)"3"4)"4"5)"5"6)"6"7)"7"8)"8"9)"9"10)"10"11)"11"12)"12"13)"13"14)"14"15)"15"16)"16"17)"17"18)"18"19)"19"20)"20"21)"21"22)"22"23)"23"127.0.0.1:6379>rpushuserdaydata:username:user1:data0(integer)24127.0.0.1:6379>lrangeuserdaydata:username:user1:data0231)"1"2)"2"3)"3"4)"4"5)"5"6)"6"7)"7"8)"8"9)"9"10)"10"11)"11"12)"12"13)“13”14)“14”15)“15”16)“16”17)“17”18)“18”19)“19”20)“20”21)“21”22)“22”23)"23"24)"0"127.0.0.1:6379>lpopuserdaydata:username:user1:data"1"127.0.0.1:6379>lrangeuserdaydata:username:user1:data0231)"2"2)"3"3)"4"4)"5"5)"6"6)"7"7)"8"8)"9"9)"10"10)"11"11)"12"12)"13"13)"14"14)"15"15)"16"16)"17"17)"18"18)"19"19)"20"20)"21"21)"22"22)"23"23)"0"127.0.0.1:6379>rpushuserdaydata:username:user1:data1(integer)24127.0.0.1:6379>lrangeuserdaydata:username:user1:data0231)"2"2)"3"3)"4"4)"5"5)"6"6)"7"7)"8"8)"9"9)"10"10)"11"11)"12"12)"13"13)"14"14)"15"15)"16"16)"17"17)"18"18)"19"19)"20"20)"21"21)"22"22)"23"23)"0"24)"1"127.0.0.1:6379>后来如何通过python操作redis参考1:https://blog.csdn.net/qq_45047809/article/details/112529734参考2:https://www.runoob.com/redis/redis-tutorial.html