[记录点滴] 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. 扩展 Tomcat Web 服务器的功能

    把服务器提升到新的高度 本教程是所有 Web 服务器或应用服务器管理员的必读指南.尽管 Apache Tomcat 的实现与其他 Web 服务器略有不同,但是本教程为许多高级管理任务提供了一种符合逻辑 ...

  2. Java实时多任务调度过程中的安全监控设计

    方浩波 (fanghb@eastcom.com)东方通信网络研究所 简介: 在一系列关联的多任务的实时环境中,如果有一个任务发生失败,可能导致所有任务产生连锁反应,从而造成调度失控的局面.特别是对于核 ...

  3. vue 路由的代码实现(转)

    https://juejin.cn/post/6844904051679870984 需要的使用到的知识 地址变化事件监控 vue插件机制 构造地址和组件的映射关系 定义route-view 组件 当 ...

  4. Python 潮流周刊#80:Django 项目性能调优(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  5. e00格式分析

    Arc/Info Export (E00) Format Analysis Original Author: Unknown Last Update: 2000-02-24,  Daniel Mori ...

  6. 树莓派下,打包发布能在树莓派中运行的Qt5程序和其运行环境

    目标:把Qt程序部署到新的树莓派中. 平台:树莓派 工作:把Qt程序和运行环境分别打包 一.程序打包过程如下,仅供参考: 1.新建文件夹A,把程序拷贝到文件夹中. 2.使用ldd获取依赖关系,并复制到 ...

  7. ABS函数:C语言与Excel中的绝对值计算

    ABS函数:C语言与Excel中的绝对值计算 ABS函数在不同的编程和计算环境中有着相似但又有所区别的用途.在本文中,我们将重点探讨ABS函数在C语言中的应用,同时也会结合Excel中的ABS函数进行 ...

  8. Member not found: ’packageRoot’ in Flutter

    path/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0/ lib/src/interface/local_platform.dar ...

  9. JAVA-通过大疆TSDK的API直接获取红外图片温度信息

    一.前言 看过很多关于大疆红外图片用TSDK取温的方式,但是网上能搜到的大部分教程都是通过官方下载文件smple编译出来的程序来取温,如果这样做,虽然确实也能够实现目的,但不得不说,不但会降低运行速度 ...

  10. html css使用特殊自定义字体避免侵权

    一般系统支持的网页常见中文字体有:宋体.雅黑.黑体.但是大多网站使用电脑自带微软雅黑(方正的)可能侵权 p { font-family: Arial,sans-serif; } 可免费商用字体百度自行 ...