Redis学习

99 阅读3分钟

常用命令

开启redis服务:

redis-server.exe

客户端连接redis:

redis-cli

各种数据类型的操作常用指令

字符串:get,set,getrange,mget,strlen,incr,decr....
哈希表:hget,hdel,hgetall,hmset,hset.....
列表(更像一个双端队列):blpop,brpop,lindex,linsert,llen,lpop,lpush,lrange,lset,rpush,rpop...其中l和r代表左边和右边
集合:sadd,scard,sdiff,smembers,sinter....
有序集合(加权集合):zadd,zcard,zcount,zrange,zrangebyscore,zremrangebyscore.....
各种命令及其说明更多的可见菜鸟教程

发布订阅

这里推荐阅读知乎的一篇关于发布订阅的文章,能更好理解发布订阅及其原理: zhuanlan.zhihu.com/p/113370863

发布订阅其实就是发布者发消息,订阅者接受消息,发微博,关注博主,看微博一个道理,至于怎么实现的可以看上面那个文章,这里盗个图 发布者publisher往频道channel发消息,订阅了这个频道的consumer就能收到消息,订阅者可以订阅多个频道

然后redis也提供了订阅者能一次性订阅多个频道的功能,即模式订阅,按照一定的pattern模式订阅符合模式的所有频道,不讲了,记得看上面文章

发布订阅的常用命令

这里先开两个客户端都连上redis服务,其中一个客户端用于订阅,另一个用于发布 订阅命令:

subscript channel [channel ...] 订阅一个或多个频道
psubscript pattern [pattern ...] 订阅符合模式的频道
punsubscript pattern [pattern ...]取消订阅符合模式的频道
unsubscript channel [channel ...]取消订阅一个或多个频道

发布命令:

publish channel message发布消息到指定频道

Lua脚本

Redis中可以执行Lua脚本

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

redis中有关lua脚本的常用命令

eval script num key1 key2 arg1 arg2其中script即为lua脚本,key和arg为传入的参数,num为key参数的数量,key就是redis的键
SCRIPT LOAD script 将一个lua脚本添加到缓存中但不会立即执行,返回一串sha1码,方便调用这个脚本
evalsha sha1 num key1 key2 arg1 arg2执行指定sha1码的lua脚本
script kill杀死所有正在运行的脚本
script flush清除缓存中所有的脚本

管道技术

redis的管道可以大幅提升redis命令处理的速度,原理可以看一下这篇文章,讲的挺详细的: zhuanlan.zhihu.com/p/64381987

这里简单总结一下: 先看看客户端向服务器端发送单条命令的处理步骤,客户端将命令发送到服务器端,然后阻塞客户端,等待socket读取服务器返回结果,服务器处理完后将结果返回给客户端,这样单条命令执行时间就是客户端发送时间+服务器处理时间和返回时间+网络来回时间了

如果使用管道的话,可以把多条命令打包,只需要一次网络开销的时间,仅在服务器和客户端分别调用一次read()和write()命令,即可节约时间