• Python操作Redis


    Python2.7.9+或Python3.4+版本,内置了pip
     
    安装pip
    # unzip setuptools-38.5.1.zip
    # cd setuptools-38.5.1
    # python setup.py install
    # tar -zxvf pip-9.0.1.tar.gz
    # cd pip-9.0.1
    # python setup.py install
     
    pyenv的安装
    # mkdir .pyenv
    # git clone https://github.com/yyuu/pyenv.git ~/.pyenv
    # echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    # echo 'export PATH="$PYENV_ROOT/bin/:$PATH"' >> ~/.bash_profile
    初始化
    # echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
    # source .bash_profile
    使用pyenv安装不同的Python版本
    # pyenv install --list
    # pyenv install -v 2.7.13
    # pyenv install -v 3.6.8
    # pyenv versions
    # pyenv global 2.7.13
    # pyenv global 3.6.8
     
    # pip install redis

    第一种方式
    修改redis配置文件,找到
    #requirepass foobared
    去掉注释,并修改为所需要的密码
    重启redis服务
    第二种方式
    127.0.0.1:6379> config get requirepass
    1) "requirepass"
    2) ""
    127.0.0.1:6379> config set requirepass "abc123"
    OK
    redis-cli -h 127.0.0.1 -p 6379 -a "abc123"
     
     
    普通连接
    import redis
    import random
    import string
    client = redis.StrictRedis(host='192.168.1.101',port=6379,db=0,password='mypass')
    key = "hello"
    setResult = client.set(key,"python-redis")
    print(setResult)
    value = client.get(key)
    print("key:",key)
    print("value:",value)
    i = 0
    while True:
        #1.string
        r_name = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(random.randint(10,30)))
        client.set("name_%d" %i,r_name)
        print(client.get("name_%d" %i))
        print(client.incr("counter"))
        #2.hash
        client.hset("myhash","f1","v1")
        client.hset("myhash","f2","v2")
        print(client.hgetall("myhash"))
        #3.list
        client.rpush("mylist","1")
        client.rpush("mylist","2")
        client.rpush("mylist","3")
        print(client.lrange("mylist",0,-1))
        #4.set
        client.sadd("myset","a")
        client.sadd("myset","b")
        print(client.smembers("myset"))
        #5.zset
        mapping = {
            "tom":99,
            "peter":33,
            "allen":66,
        }
        client.zadd("myzset",mapping)
        print(client.zrange("myzset",0,-1,withscores=True))
        i = i + 1
        print("i = ",i)
     
     
    sentinel方式
    import redis
    from redis.sentinel import Sentinel
    # 连接哨兵服务器(主机名也可以用域名)
    sentinel = Sentinel([('192.168.1.101', 26379),('192.168.1.102', 26379),('192.168.1.103', 26379)],socket_timeout=0.5)
    # 获取主服务器地址
    master = sentinel.discover_master('mymaster')
    print(master)
    # 获取从服务器地址
    slave = sentinel.discover_slaves('mymaster')
    print(slave)
    # 获取主服务器进行写入
    master = sentinel.master_for('mymaster', socket_timeout=0.5, password='mypass', db=0)
    w_ret = master.set('foo', 'bar')
    # # 获取从服务器进行读取(默认是round-roubin)
    slave = sentinel.slave_for('mymaster', socket_timeout=0.5, password='mypass', db=0)
    r_ret = slave.get('foo')
    print(r_ret)
     
     
    redis cluster方式 
    # pip install redis-py-cluster
    from rediscluster import StrictRedisCluster
    import datetime
    import sys
    def redis_cluster():
        redis_nodes =  [{'host':'192.168.1.101','port':6379},
                        {'host':'192.168.1.102','port':6379},
                        {'host':'192.168.1.103','port':6379},
                        {'host':'192.168.1.101','port':6380},
                        {'host':'192.168.1.102','port':6380},
                        {'host':'192.168.1.103','port':6380}
                       ]
        try:
            redisconn = StrictRedisCluster(startup_nodes=redis_nodes)
            return redisconn
        except Exception:
            print('Connect Error!')
            sys.exit(1) 
    if __name__ == '__main__':
        redisconn = redis_cluster()
        redisconn.set('name','admin')
        redisconn.set('age',18)
        print("name is:",redisconn.get('name'))
        print(redisconn.get('name'),redisconn.get('age'))
     
  • 相关阅读:
    mysql中group by和order by混用 结果不是理想结果
    jquery点击弹框外层关闭弹框
    https soap链接示例
    微信更改分享图片和分享链接的方法
    OPENSSL安装
    php获取csv数据无乱码
    实例讲解Nginx下的rewrite规则 来源:Linux社区
    php https链接
    PHP CURL HTTPS POST
    php生成二维码
  • 原文地址:https://www.cnblogs.com/allenhu320/p/11339907.html
Copyright © 2020-2023  润新知