[记录点滴] OpenResty中Redis操作总结
[记录点滴] 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操作总结的更多相关文章
- openresty开发系列27--openresty中封装redis操作
openresty开发系列27--openresty中封装redis操作 在关于web+lua+openresty开发中,项目中会大量操作redis, 重复创建连接-->数据操作-->关闭 ...
- 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 ...
- .NET中Redis安装部署及使用方法简介附->开源Redis操作辅助类
Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Github.StackOverflow 等大型应用中都用其作为缓存,Redis的官网为http://redis.io/. Re ...
- 在Go语言中基础的Redis操作
在Go语言中基础的Redis操作 需要先安装redigo go get "github.com/garyburd/redigo/redis" Go语言Redis客户端的简单示例 连 ...
- redis 操作大全 PHP-redis中文文档
转自 : http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html phpredis是php的一个扩展,效率是相当高有链表排序功能, ...
- EasyCMS在幼儿园视频直播项目实战中以redis操作池的方式应对高并发的redis操作问题
在之前的博客< EasyDarwin幼教云视频平台在幼教平台领域大放异彩!>中我们也介绍到,EasyCMS+EasyDarwin+redis形成的EasyDarwin云平台方案,在幼教平台 ...
- pyhon之对memcached及redis操作
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- .NET中Redis安装部署及使用方法简介
一Redis服务端以服务方式运行 修改端口压缩文件中配置的是6488 修改密码 修改库的数量 工具配置安装后如下图 二Redis服务端以控制台方式运行 第一步配置本地服务 第二部安装和配置客户端 三C ...
- python 全栈开发,Day101(redis操作,购物车,DRF解析器)
昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...
- go中redis使用小结
最近做了个关于redis的项目,那么就整理下遇到和未遇到的问题 1.redis的简介安装 2.redis的数据结构 3.Redis基本使用 4.Redis的并发 5.Redis的落地 一.redis的 ...
随机推荐
- 扩展 Tomcat Web 服务器的功能
把服务器提升到新的高度 本教程是所有 Web 服务器或应用服务器管理员的必读指南.尽管 Apache Tomcat 的实现与其他 Web 服务器略有不同,但是本教程为许多高级管理任务提供了一种符合逻辑 ...
- Java实时多任务调度过程中的安全监控设计
方浩波 (fanghb@eastcom.com)东方通信网络研究所 简介: 在一系列关联的多任务的实时环境中,如果有一个任务发生失败,可能导致所有任务产生连锁反应,从而造成调度失控的局面.特别是对于核 ...
- vue 路由的代码实现(转)
https://juejin.cn/post/6844904051679870984 需要的使用到的知识 地址变化事件监控 vue插件机制 构造地址和组件的映射关系 定义route-view 组件 当 ...
- Python 潮流周刊#80:Django 项目性能调优(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- e00格式分析
Arc/Info Export (E00) Format Analysis Original Author: Unknown Last Update: 2000-02-24, Daniel Mori ...
- 树莓派下,打包发布能在树莓派中运行的Qt5程序和其运行环境
目标:把Qt程序部署到新的树莓派中. 平台:树莓派 工作:把Qt程序和运行环境分别打包 一.程序打包过程如下,仅供参考: 1.新建文件夹A,把程序拷贝到文件夹中. 2.使用ldd获取依赖关系,并复制到 ...
- ABS函数:C语言与Excel中的绝对值计算
ABS函数:C语言与Excel中的绝对值计算 ABS函数在不同的编程和计算环境中有着相似但又有所区别的用途.在本文中,我们将重点探讨ABS函数在C语言中的应用,同时也会结合Excel中的ABS函数进行 ...
- Member not found: ’packageRoot’ in Flutter
path/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0/ lib/src/interface/local_platform.dar ...
- JAVA-通过大疆TSDK的API直接获取红外图片温度信息
一.前言 看过很多关于大疆红外图片用TSDK取温的方式,但是网上能搜到的大部分教程都是通过官方下载文件smple编译出来的程序来取温,如果这样做,虽然确实也能够实现目的,但不得不说,不但会降低运行速度 ...
- html css使用特殊自定义字体避免侵权
一般系统支持的网页常见中文字体有:宋体.雅黑.黑体.但是大多网站使用电脑自带微软雅黑(方正的)可能侵权 p { font-family: Arial,sans-serif; } 可免费商用字体百度自行 ...