Redis在测试中应用

一、Redis简介

目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了 读写速度,是实现网站高并发不可或缺的一部分。在分布式系统和WEB开发中得到广泛的应用
其存储的是非结构化的key-value数据,支持丰富的数据结构。Redis的5种对象类型:String字符串、hash哈希、list列表、set集合、zset有序集合。丰富的类型是redis相对于memcached等一大优势。

二、数据类型介绍

字符串:常用命令:set(赋值)/get(查询)/decr (自减)/incr(自增)/mget(查询多个key)等。
哈希:常用命令:hset(添加赋值)/hget(查询)/hgetall(查询所有字段和值)等。
列表是字符串的有序可重复结构:常用命令:lpush(列表头部添加元素)/rpush(列表尾部添加元素)/lpop(头部删除元素)/rpop(尾部删除元素)/lrange(查询元素)等。
set集合字符串的不重复无序结构。常用命令有sadd(添加元素)/spop(删除)/smembers(查询)/sunion(添加多个集合)等,
zset有序集合:sorted set在set基础上为每个元素都关联了一个分数score,通过score来实现排序功能。常用命令:zadd(添加)/zrange(查询)等

三、常用命令

string操作
rc.get(name) 返回数据库中key为name的String的value

hash操作
rc.hgetall(name)  从key为name的hash中获取所有映射键值对
rc.hget(name,key) 返回key为name的hash中field对应的value

rc.zrange(name,0,1,desc=False,withscores=True,score_cast_func=int)
'''参数:
    name    redis的name
    start   有序集合索引起始位置
    end     有序集合索引结束位置
    desc    排序规则,默认按照分数从小到大排序
    withscores  是否获取元素的分数,默认只获取元素的值
    score_cast_func 对分数进行数据转换的函数'''

四、redis客户端

1)在mac下安装Redis Desktop Manager

2)在linux下安装redis-cli客户端

 1.进入redis

  ./redis-cli -c -h ip -p port

  2.查看redis下面的key

  ./redis-cli -c -h ip -p port keys biz:atcops:push_courier_num:*

  3.删除key

  del biz:atcops:push_courier_num:20181121

zset示例
ZADD KEY_NAME SCORE1 VALUE1....SCORE2 VALUE2
redis>ZADD myzset 1 "one"
redis>ZADD myzset 2 "two" 3 "three"
redis>ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) 1
3) "two"
4) 2
5) "three"
6) 3
redis>ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
如果带WITHSCORES参数,输出value和score的值,如果不带,只输出value的值

五、python脚本访问redis

python脚本访问redis集群
python包redis-py-cluster (1.3.5) 

示例一:

#!/usr/bin/env python
#-*- coding: utf-8 -*-  

from rediscluster import StrictRedisCluster

startup_nodes = [{"host": "ip", "port": "port1"},
                 {"host": "ip", "port": "port2"},
                 {"host": "ip", "port": "port3"}]

rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True)

print("支付单:",rc.get("biz:atcokc:aaid:v20181100:24841,-69979,45138@0.13:area_period_pay_orders:20181113#24"))
print("接收单",rc.get("biz:atcokc:aaid:v20181100:24841,-69979,45138@0.13:area_period_receive_orders:20181113#24"))
print("实时未接收单:",rc.get("biz:atcokc:unreceived:24932,-70015,45083@0.13:v20181111:20181113"))
print("周完单量:",rc.hgetall("redenvelop2:re2:coid:933901"))

示例二: 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from rediscluster import StrictRedisCluster
import sys


def redis_cluster():
    redis_nodes = [{'host': 'ip', 'port': port1},
                   {'host': 'ip', 'port': port2},
                   {'host': 'ip', 'port': port3}]
    try:
        rc = StrictRedisCluster(startup_nodes=redis_nodes)
    except Exception as e:
        print("Connect Error!")
        sys.exit(1)

    keys = redisconn.keys('biz:atcokc:area_ac:*')
        for key in keys:
            arr = redisconn.zrange(key, 0, -1, withscores=True)
            print('===========================' + '区域' + key.decode())
            for k in arr:
                if k[0].decode().find('933901') == 0:
                    print(k[0].decode(), k[1])

redis_cluster()

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值