Redis环境准备rredis函数库rredis基本使用操作rredis用例每章将分为“文字说明部分”和“代码部分”,保持文字说明和代码的连贯性。***章Redis环境准备文字说明部分:一、环境准备,这里我选择64位服务器版本的LinuxUbuntu操作系统12.04,大家可以根据自己的使用习惯选择Linux。Redis安装过程被跳过。sudoapt-getinstallredis-server查看Redis服务器环境使用/etc/init.d/redis-server命令启动redis-server,默认端口:port=6379在服务器端,使用telnet连接redis-server使用telnet插入数据,读取数据R语言环境2.15.0,WinXP通过远程连接访问Redis服务器。代码部分:查看操作系统~uname-aLinuxAY121111030241cda80033.2.0-29-generic#46-UbuntuSMPFriJul2717:03:23UTC2012x86_64x86_64x86_64GNU/Linux~cat/etc/issueUbuntu12.04.1LTS~.d/etc/redisit-serverstartStartingredis-server:redis-server。查看系统进程~ps-aux|grepredisredis201280.00.0106761428?ss16:390:00/usr/bin/redis-server/etc/redis/redis.conf查看启动日志~cat/var/log/redis/redis-server.log[20128]14Apr16:39:43*服务器启动,Redisversion2.2.12[20128]14Apr16:39:43#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'tol/confandthenrebootorrunthecommand'=effectforsymolvtomelv.over]14Apr16:39:43*Theserverisnowreadytoacceptconnectiononport6379telnetconnectionredis-server~telnetlocalhost6379Trying127.0.0.1...Connectedtolocalhost.Escapecharacterisrush1insertdata1rushdata'^]'lrangedata0-1*2$11$12R语言开发环境2.15.0,WinXP~RR版本2.15.0(2012-03-30)版权所有(C)2012TheRFoundationforStatisticalComputingISBN3-900051-07-0Platform:i386-pc-mingw32/i386(32-bit)第二章rredis函数库rredis提供了100个函数,虽然对于redis的操作函数有很多,但是用法比较简单,对R语言的支持足够灵活,代码也比较简洁。下面列出了所有的rredis函数库,我只挑选了一些常用的。文字说明部分:建立连接,关闭连接redisConnect(),redisClose()清除当前/所有数据库数据switchdatabases:0是默认数据库redisSelect(0)插入字符串对象,批量插入redisSet('x',runif(5)),redisMSet(list(x=pi,y=runif(5),z=sqrt(2)))读取字符串对象,批量读取redisGet('x'),redisMGet(c('x','y','z'))删除对象redisDelete('x')插入左侧数组对象,在右侧插入数组对象redisLPush('a',1),redisRPush('a','A')在左侧弹出一个数组对象,在右侧弹出一个数组对象,redisLPop('a'),redisRPop('a')从左开始显示数组对象列表redisLRange('a',0,-1)插入集合类型对象redisSAdd('A',runif(2))显示集合对象有多少个元素,和列表显示集合对象元素redisSCard('A'),redisSMembers('A')显示区别,intersection,和两个集合对象的联合redisSDiff(c('A','B')),redisSInter(c('A','B')),redisSUnion(c('A','B')'))代码部分:共100个函数redisAuthredisBgRewriteAOFredisBgSaveredisBLPopredisBRPopredisBRPopLPushredisCloseredisCmdredisConnectredisDBSizeredisDecrredisDecrByredisDeleteredisDiscardredisEvalredisExecredisExistsredisExpireredisExpireAtredisFlushConredisGetFlushGetredisshAllredisFluSetredissHExistsredisHFieldsredisHGetredisHGetAllredisHIncrByredisHKeysredisHLenredisHMGetredisHMSetredisHSetredisHValsredisIncrredisIncrByredisInforedisKeysredisLIndexredisLLenredisLPopredisLPushredisLRangeredisLRemredisLSetredisLTrimredisMGetredisMonitorChannelsredisMoveredisMSetredisMultiredisPublishredisRandomKeyredisRenameredisRPopredisRPopLPushredisRPushredisSAddredisSaveredisSCardredisSDiffredisSDiffStoreredisSelectredisSetredisSetBlockingredisSetContextredisShutdownredisSInterredisSInterStoreredisSIsMemberredisSlaveOfredisSMembersredisSMoveredisSortredisSPopredisSRandMemberredisSRemredisSubscriberedisSUnionredisSUnionStoreredisTTLredisTyperedisUnsubscriberedisUnwatchredisWatchredisZAddredisZCardredisZIncrByredisZInterStoreredisZRangeredisZRangeByScoreredisZRankredisZRemredisZRemRangeByRankredisZRemRangeByScoreredisZScoreredisZUnionStore第三章rredis基本使用操作文字说明部分:首先,要安装rredis类库,加载类库redisConnect(host="192.168.1.101",port=6379),然后通过redisConnect()函数与RedisServer建立连接。如果是本地连接redisConnect()不需要参数,下面的例子使用远程连接,加上host参数配置IP地址。redisConnect(host="192.168.1.101",port=6379)redis的基本操作:建议链接、切换数据库、列出所有KEY值、清除当前数据库数据、清除所有数据库数据、关闭链接、字符串类型操作:插入、读取、删除、插入和设置过期时间,批量操作列表类型操作:插入、读取、弹出集合类型操作:插入、读取、交集、差分、并集rredis和redis-cli的交互操作代码部分:基本操作redis:#installrredisinstall.packages(rredis)#loadrredis类库library(rredis)#远程连接redisserverredisConnect(host="192.168.1.101",port=6379)#listallkeysredisKeys()[1]"x""data"#显示有多少个keyredisDBSize()[1]2#切换数据库1redisSelect(1)[1]"OK"redisKeys()NULL#切换数据库0redisSelect(0)[1]"OK"redisKeys()[1]"x""data"#清除当前数据库数据redisFlushDB()[1]"OK"#清除所有数据库数据redisFlushAll()[1]"OK"#关闭链接redisClose()字符串类型操作:#insertObjectredisSet('x',runif(5))1]"OK"#读取对象redisGet('x')[1]0.676161590.063586430.074780210.321291400.16264615#设置数据过期时间redisExpire('x',1)Sys.sleep(1)redisGet('x')NULL#批量插入redisMSet(list(x=pi,y=runif(5),z=sqrt(2)))[1]TRUE#批量读取redisMGet(c('x','y','z'))$x[1]3.141593$y[1]0.92495010.34449940.64772500.16814210.2646853$z[1]1.414214#删除数据redisDelete('x')[1]1redisGet('x')NULL#p#list类型操作#从数组左边插入数据redisLPush('a',1)redisLPush('a',2)redisLPush('a',3)#显示数组左边0-2的数据redisLRange('a',0,2)[[1]][1]3[[2]][1]2[[3]][1]1#从数据左边弹出一条数据redisLPop('a')[1]3#显示从0-(-1)在数组左边redisLRange('a',0,-1)[[1]][1]2[[2]][1]1#从数组右边插入数据redisRPush('a','A')redisRPush('a','B')#显示来自数组左侧0-(-1)的数据redisLRange('a',0,-1)[[1]][1]2[[2]][1]1[[3]][1]"A"[[4]][1]"B"#从数据右侧弹出一条数据redisRPop('a')设置类型操作redisSAdd('A',runif(2))redisSAdd('A',55)#显示对象有几个元素redisSCard('A')[1]2#列出显示设置对象元素redisSMembers('A')[[1]][1]55[[2]][1]0.64940410.3181108redisSAdd('B',55)redisSAdd('B',rnorm(3))#display对象有几个元素redisSCard('B')[1]2#列出显示集合对象元素redisSMembers('B')[[1]][1]55[[2]][1]0.10747871.31110060.8223434#差异集合redisSDiff(c('A','B'))[[1]][1]0.64940410.3181108#intersectionredisSInter(c('A','B'))[[1]][1]55#UnionredisSUnion(c('A','B'))[[1]][1]55[[2]][1]0.10747871.31110060.8223434[[3]][1]0.64940410.3181108rredis与重新dis-cli交互redis客户端插入数据,rredis读取数据#打开redis客户端~redis-cliredis127.0.0.1:6379>setshell"Greetings,Rclient!"OKredisGet('shell')[1]"Greetings,Rclient!"rredis插入数据,redis客户端读取数据#插入数据redisSet('R','Greetings,shellclient!')[1]"OK"#读取数据(有乱码)redis127.0.0.1:6379>getR"X\\x00\x00\x00\x02\x00\x02\x0f\x00\x00\x02\x03\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x04\x00\\x00\x00\x00\x18你好,shellclient!”transformation存储在数组(charToRaw)redisSet('R',charToRaw('Greetings,shellclient!'))[1]TRUE#正常读取数据redis127.0.0.1:6379>getR“你好,shellclient!”第四章rredis测试用例测试用例要求:读入一个数据文件,从左到右分别是用户id,密码,邮箱,并在redis中建立一个合适的数据模型,并将这些数据导入到redis文本描述部分:首先,定义数据模型:KEY:users:useridVALUE:id:useridpw:passwordemail:mailboxR语言读取数据文件。然后建立redis连接,循环插入数据。以users:wolys为KEY,输出应用的VALVE值。代码部分#读取数据data<-scan(file="data5.txt",what=character(),sep="")data<-data[which(data!='#')]>data[1]"wolys”“wolysopen111”“wolys@21cn.com”[4]“coralshanshan”“601601601”“zss1984@126.com”[7]“pengfeihuchao”“woaidami”“294522652@qq.com”[10]“simulategirl”"@#$9608125""simulateboy@163.com"[13]"daisypp""12345678""zhoushigang_123@163.com"[16]"sirenxing424""tfiloveyou""sirenxing424@126.com"[19]"raininglxy""1901061139""lixinyu23@qq.com"[22]"leochenlei""leichenlei""chenlei1201@gmail.com"[25]"z370433835""lkp145566""370433835@qq.com"[28]"cxx0409""12345678""cxx0409@126.com"[31]"xldq_l""061222ll""viv093@sina.com"#connectionredis连接redisConnect(host="192.168.1.101",port=6379)redisFlushAll()redisKeys()#循环插入数据id<-NULLfor(iin1:length(data)){if(i%%3==1){id<-data[i]redisSAdd(paste("users:",id,sep=""),paste("id:",id,sep=""))}elseif(i%%3==2){redisSAdd(paste("users:",id,sep=""),paste("pw:",data[i],sep=""))}else{redisSAdd(paste("users:",id,sep=""),paste("email:",data[i],sep=""))}}#列出所有的KEYredisKeys()[1]"users:cxx0409""users:sirenxing424""users:simulategirl""users:xldq_l"[5]"users:coralshanshan""users:raininglxy""users:pengfeihuchao""users:leochenlei"[9]"users:daisypp""users:wolys""users:z370433835"#通过KEY查询VALUEredisSMembers("users:wolys")[[1]][1]"pw:wolysopen111"[[2]][1]"email:wolys@21cn.com"[[3]][1]"id:wolys"#关闭redis连接redisClose()完成测试用例数据文件:data5.txttwolys#wolysopen111#wolys@21cn.comcoralshanshan#601601601#zss1984@126.compengfeihuchao#woaidami#294522652@qq.comsimulategirl#@#$9608125#simulateboy@163.comdaisypp#12345678#zhoushigang_123@163.comsirenxing424#tfiloveyou#sirenxing424@126.comraininglxy#1901061139#lixinyu23@qq.comleochenlei#leichenlei#chenlei1201@gmail.comz370433835#lkp145566#370433835@qq.comcxx0409#12345678#cxx0409@126.comxldq_l#061222ll#viv093@sina.com原文链接:https://img.ydisp.cn/news/20220804/31ixl2vffes【责任编辑:彭帆电话:(010)68476606】
