zoukankan      html  css  js  c++  java
  • Redis常用操作

    详细Redis操作手册:

    http://doc.redisfans.com/

    python常用操作redis

    import redis
    
    # 创建redis连接
    conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)  # 不加decode_responses参数,取出的是bytes类型
    """
    # 创建redis连接:连接池
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, decode_responses=True)
    conn = redis.Redis(connection_pool=pool)
    """
    
    # 把redis看做一个大字典,redis = {name1: {"k1": "v1"}} k1和v1必须为字符串,v1要存字典必须要序列化
    # 给redis的name设置单个key-value
    conn.hset("name1", "k1", "v1")  
    
    # 获取redis的单个name的key的value
    res1 = conn.hget("name1", "k1")  # v1
    
    # 给redis的name批量设置key-value
    conn.hmset("name2", {"k2": "v2", "k3": "v3"})
    
    # 获取redis的name的所有key-value
    res4 = conn.hgetall("name2")     # {'k2': 'v2', 'k3': 'v3'}
    
    # 返回redis的name组成的列表,满足name like SHOPPING_CART_*
    conn.scan_iter("SHOPPING_CART_*")

    redis管道执行原子性操作

    '''
    redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,
    如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,
    并且默认情况下一次pipline 是原子性操作
    '''
    import redis
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    
    # pipe = r.pipeline(transaction=False)
    pipe = r.pipeline(transaction=True)
    # 这两条一起执行
    pipe.set('name', 'zhangsan')
    pipe.set('role', 'student')
    
    pipe.execute()

    redis发布者订阅者:

    pub.py   发布者

    import redis
    
    conn = redis.Redis(host="localhost", port=6379, decode_responses=True)
    conn.publish("频道1", "消息2")        # “频道1”相当于redis的name

    sub.py  订阅者

    import redis
    conn = redis.Redis(host="localhost", port=6379, decode_responses=True)
    
    # 第一步  生成一个订阅者对象
    pubsub = conn.pubsub()
    
    # 第二步  订阅一个消息
    pubsub.subscribe("频道1")
    
    # 创建一个接收
    while True:
        print("start receiving...")
        msg = pubsub.parse_response()
        print(msg)

    先运行一次pub.py,给"频道1"设定好值"消息1"

    运行三次sub.py,产生三个订阅者,都接收到"消息1"

    将pub.py的“消息1”改为“消息2”,运行一次, 三个订阅者都收到“消息2”

    常用命令:

    =========================

    # 获取所有配置项
    reids 127.0.0.1:6379> config get *
    # 获取单个配置项
    redis 127.0.0.1:6379> config get loglevel
    # 编辑配置
    redis 127.0.0.1:6379> config set loglevel "notice"

    ===========================

    # 设置密码,密码保护Redis服务器
    
    redis> CONFIG SET requirepass secret_password   # 将密码设置为 secret_password
    OK
    
    redis> QUIT                                     # 退出再连接,让新密码对客户端生效
    
    [huangz@mypad]$ redis
    
    redis> PING                                     # 未验证密码,操作被拒绝
    (error) ERR operation not permitted
    
    redis> AUTH wrong_password_testing              # 尝试输入错误的密码
    (error) ERR invalid password
    
    redis> AUTH secret_password                     # 输入正确的密码
    OK
    
    redis> PING                                     # 密码验证成功,可以正常操作命令了
    PONG
    
    
    # 清空密码
    
    redis> CONFIG SET requirepass ""   # 通过将密码设为空字符来清空密码
    OK
    
    redis> QUIT
    
    $ redis                            # 重新进入客户端
    
    redis> PING                        # 执行命令不再需要密码,清空密码操作成功
    PONG

    =======================================================================

    select  2

    切换db,一共有16个,编号为0,1,2,3,4....15

    delete(*names)

    1
    # 根据删除redis中的任意数据类型

    exists(name)

    1
    # 检测redis的name是否存在

    keys(pattern='*')

    1
    2
    3
    4
    5
    6
    7
    # 根据模型获取redis的name
     
    # 更多:
        # KEYS * 匹配数据库中所有 key 。
        # KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
        # KEYS h*llo 匹配 hllo 和 heeeeello 等。
        # KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo

    expire(name ,time)

    1
    # 为某个redis的某个name设置超时时间

    rename(src, dst)

    1
    # 对redis的name重命名为

    move(name, db))

    1
    # 将redis的某个值移动到指定的db下

    randomkey()

    1
    # 随机获取一个redis的name(不删除)

    type(name)

    1
    # 获取name对应值的类型

    scan(cursor=0, match=None, count=None)
    scan_iter(match=None, count=None)

    1
    # 同字符串操作,用于增量迭代获取key
  • 相关阅读:
    ActiveX在.NET 2005中的实现(三)
    SharePoint学习研究资源
    配置Excel Service的Excel Web Access 功能及应用
    SkyDrive 与 Hotmail 的 Office Web Apps
    ActiveX在.NET 2005中的实现(二)
    Sharepoint设置SMTP邮件发送服务器(使用中继服务器)
    SharePoint2010新功能
    Analysis自动处理
    NBear V3
    Server数据推送,长连接
  • 原文地址:https://www.cnblogs.com/staff/p/9955843.html
Copyright © 2011-2022 走看看