[记录点滴] OpenResty中Redis操作总结

0x00 摘要

本文总结了在OpenResty中的操作,与大家分享,涉及知识点为Openresty, Lua, Redis。

0x01 操作记录

操作使用 db.redis.redis_iresty。

1.1 初始化 & 基础函数

set $redis_host 127.0.0.1;  -- In nginx.conf

local config = {
ip = ngx.var.redis_host,
port = 5379,
db_index = 0,
password = "xxxxx"
}
return config local REDIS = require "db.redis.redis_iresty"
local REDIS_INSTANCE = REDIS:new(config) function is_empty(t)
return not t or t == nil or t == null or t == ngx.null
end

1.2 流水线操作

REDIS_INSTANCE:init_pipeline()
-- 这里可以写具体相关操作
local respTable, err = REDIS_INSTANCE:commit_pipeline()
if _.isEmpty(respTable) then
respTable = {} --比如默认值 -- 如果什么都找不到,redis 就返回 {}
end

1.3 list操作

-- 将一个或多个值插入到列表头部
REDIS_INSTANCE:lpush(LIST, id)

1.4 set操作

-- 向集合添加一个或多个成员
if 1 == REDIS_INSTANCE:sadd(SET_id, user_id) then ... -- 移除集合中一个或多个成员
if 1 == REDIS_INSTANCE:srem(SET_id, user_id) then ...

1.5 Hash操作

-- 为哈希表 key 中的指定字段的整数值加上增量 increment,具体增减由最后一个参数正负值决定
REDIS_INSTANCE:hincrby(HASH, HASH_KEY, -1); -- 获取所有给定字段的值
local keys = {"ID", "name"}
local resp, err = REDIS_INSTANCE:hmget( HASH, unpack(hash_keys))
if resp == nil then ... -- 获取在哈希表中指定 key 的所有字段和值
local resp, err = REDIS_INSTANCE:hgetall(hash_key)
if is_empty(resp) then ... -- 将哈希表 key 中的字段 field 的值设为 value
REDIS_INSTANCE:hset(HASH, HASH_KEY, 5);

1.6 zset操作

-- 移除有序集合中的一个或多个成员
REDIS_INSTANCE:zrem(ZSET, id); -- 有序集合中对指定成员的分数加上增量 increment
REDIS_INSTANCE:zincrby(ZSET, 1, id) -- 向有序集合添加一个或多个成员,或者更新已存在成员的分数
REDIS_INSTANCE:zadd(ZSET, tonumber(user_id), id); -- 返回有序集合中指定成员的索引
if null ~= REDIS_INSTANCE:zrank(ZSET, id) then ... -- 获取有序集合的成员数
total_items, err = REDIS_INSTANCE:zcard(ZSET) -- 返回有序集中指定区间内的成员,通过索引,分数从高到低
resp, err = REDIS_INSTANCE:zrevrange(ZSET, start, finish) -- 通过索引区间返回有序集合指定区间内的成员
resp, err = REDIS_INSTANCE:zrange(ZSET, start, finish) -- 返回有序集中指定分数区间内的成员,分数从高到低排序
resp, err = REDIS_INSTANCE:zrevrangebyscore(key, max, min, 'LIMIT', offset, count) -- 通过分数返回有序集合指定区间内的成员
resp, err = REDIS_INSTANCE:zrangebyscore(key, min, max, 'LIMIT', offset, count)

1.7 String操作

-- 删除
local resp, err = REDIS_INSTANCE:del(key) -- 获取指定 key 的值
local resp, err = REDIS_INSTANCE:get(key) -- 获取所有(一个或多个)给定 key 的值
local keys = {"ID", "name"}
resp, err = REDIS_INSTANCE:mget(unpack(keys))

[记录点滴] OpenResty中Redis操作总结的更多相关文章

  1. openresty开发系列27--openresty中封装redis操作

    openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭 ...

  2. CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

    1.下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Re ...

  3. .NET中Redis安装部署及使用方法简介附->开源Redis操作辅助类

    Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. Re ...

  4. 在Go语言中基础的Redis操作

    在Go语言中基础的Redis操作 需要先安装redigo go get "github.com/garyburd/redigo/redis" Go语言Redis客户端的简单示例 连 ...

  5. redis 操作大全 PHP-redis中文文档

    转自  : http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html phpredis是php的一个扩展,效率是相当高有链表排序功能, ...

  6. EasyCMS在幼儿园视频直播项目实战中以redis操作池的方式应对高并发的redis操作问题

    在之前的博客< EasyDarwin幼教云视频平台在幼教平台领域大放异彩!>中我们也介绍到,EasyCMS+EasyDarwin+redis形成的EasyDarwin云平台方案,在幼教平台 ...

  7. pyhon之对memcached及redis操作

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  8. .NET中Redis安装部署及使用方法简介

    一Redis服务端以服务方式运行 修改端口压缩文件中配置的是6488 修改密码 修改库的数量 工具配置安装后如下图 二Redis服务端以控制台方式运行 第一步配置本地服务 第二部安装和配置客户端 三C ...

  9. python 全栈开发,Day101(redis操作,购物车,DRF解析器)

    昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...

  10. go中redis使用小结

    最近做了个关于redis的项目,那么就整理下遇到和未遇到的问题 1.redis的简介安装 2.redis的数据结构 3.Redis基本使用 4.Redis的并发 5.Redis的落地 一.redis的 ...

随机推荐

  1. springboot 参数注解 注入参数

    什么时注解参数 说明 我们在 使用spring mvc 的时候会使用这样的注解 @ResponseBody 这样,spring mvc 会将 客户端传来的数据,自动构建成 相应类型的对象. 有些情况下 ...

  2. 以下哪一项是对CSMA/CA和CSMA/CD LAN控制通用的CSMA方法的适当描述?

    A.   检测载波信号并控制数据传输. B.   获得具有传输权的消息(令牌)的终端传输数据. C.   如果在数据传输过程中发生冲突,立即重新发送. D.   即使在使用传输线时也可以传输数据. = ...

  3. COS 音视频实践|播放多场景下的 COS 视频文件

    导语 上回 (COS音视频实践|多种姿势让你的视频"跑"起来)说道,基于您的实际场景,可以选择不同的方式,在 Web 浏览器端播放您的 COS 视频文件.本文将基于腾讯云超级播放器 ...

  4. spring 项目实现带请求链路id的日志记录

    我们在做java项目的时候通常需要通过请求日志来排查定位线上问题,在日志比较多而我们又需要查找整个请求的全部日志的时候会比较困难.所以,就需要在日志记录的时候讲同一个请求的关键日志用同一个唯一标识串联 ...

  5. 中电金信鲸Bot RPA荣获最佳人工智能解决方案

    近年来,数字经济已成为国家"十四五"规划和"新基建"战略的重要支撑.银行业作为我国经济体系的重要组成部分,其发展战略也出现了新的变化.数字化智能化转型成为银行业 ...

  6. 中电金信通过KCSP认证 云原生能力获权威认可

    ​ 中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商. ​ Ku ...

  7. Eureka 缓存机制详细配置

    https://blog.csdn.net/qwe86314/article/details/94963865 上节为大家介绍了 Eureka 的工作原理,其中提到了 Eureka Server 内部 ...

  8. cmake错误:CMake Error: CMake can not determine linker language for target

    解决方案:因为你的library只有头文件,没有cpp文件 在add_library中增加cpp文件 同时建立一个空的cpp文件即可. 处理后的源代码结构和CMakeLists.txt内容如下所示: ...

  9. JavaScript设计模式与开发实践 PDF——带完整书签

    下载链接:JavaScript设计模式与开发实践 带完整书签:

  10. Spring+MyBatis企业应用实战(第二版)2018-电子书+源码+SQL脚本

    Spring+MyBatis企业应用实战(第二版)2018学习资料: 电子书: 链接:https://pan.baidu.com/s/1yAdlA5F_HuZMbO4who5jVw 提取码:58yz ...