传统 request/response 协议
pipeline
是什么
即使 client 没有收到 response,依旧可以发送 request,最后才处理旧的 response
注意
当 client 使用 pipeline 向 server 发送请求时,server 需要使用一定的内存,按顺序存储相应的 response,所以如果需要使用流水线发送大量命令,则最好以具有合理数量的批处理形式发送它们,例如 10k 命令,阅读答复,然后再次发送 10k 命令,依此类推
优点
scripting lua
减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延
原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本的过程中无需担心会出现竞态条件,无需使用事务。
复用。客户端发送的脚步会永久存在redis中,这样,其他客户端可以复用这一脚本而不需要使用代码完成相同的逻辑。
eval 用来直接执行 lua 脚本:
EVAL script numkeys key [key ...] arg [arg ...]
> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis可以在不使用内置默认配置的配置文件的情况下启动,但是建议仅将此设置用于测试和开发目的。
配置Redis的正确方法是提供一个Redis配置文件,通常称为redis.conf
。
指令格式:keyword argument1 argument2 ... argumentN
命令行传递参数
./redis-server --port 6380 --slaveof 127.0.0.1 6379
redis.conf
文件中使用的参数的格式完全相同,但关键字的前缀为--
。redis.conf
格式。服务器运行时传递参数
config set
config get
可以在不停止和重启服务的情况下设置和查询配置信息redis.conf
文件内容,下次启动服务仍然使用旧的配置信息config rewrite
可以更新 redis.conf
内容,未涉及的配置内容和注释部分不会更改将 redis 配置为缓存
将 redis 设置为缓存,那么每个 key 都会有一个过期限制,就不用单独设置 expire time 了
例如如下设置,当超过 2mb 的内存限制,便会过期
maxmemory 2mb
maxmemory-policy allkeys-lru
原文:https://www.cnblogs.com/leafs99/p/redis_learning_02.html