python使用redis 由于目标计算机积极拒绝,无法连接

版本:

  python 3.5

  redis 3.0.1(redis的安装 pip install redis)

1、连接

  import redis

  r = redis.Redis(host='192.168.222.129', port='6379', db=0,password=password)

  (这里通过本地远程连接redis的时候,会有一些问题,请见注一)

  创建了redis实例后,就可以开始向redis中设置数据了:

  

 2、使用连接池(connection pool)

    就像我们在使用线程的时候,会选择线程池一样,redis的连接,我们也会选择使用connection pool来管理对一个redis server的所有连接,

    避免每次建议释放连接的开销。默认每个redis实例都会维护一个自己的连接池。

  当然我们也可以自己创建一个连接池,然后作为参数Redis,这样就可以实现多个redis实例共享一个连接池。

  如下,我们创建了一个线程池,然后创建了两个redis实例,通过任何一个实例都可以获取到线程池中的成员。

  

 3、redis常用API

  1)String操作

    使用格式:r.set(key, value, ex, px, nx, xx)

      ex:过期时间(秒)

      px:过期时间(毫秒)

      nx:如果设置为True,只有在key不存在的时候才能成功执行

      xx:如果设置为True,只有在key存在的时候才能成功执行

    添加数据:r.set("name","fiona")

    获取数据:r.get("name")

    追加数据:r.append("name", " is cute!")

    获取原值并重新赋值:r.getset("name","airo")

    删除数据:r.delete("name")

    默认自增1:r.incr("age", count=1) (如果key对应的value不能转化为数字,会报错,如果key不存在,会创建该key并赋值为0再执行自增1,可以指定count,就自增count)

    增量:r.incrby("age") (同上)

    自减1:r.decr("age") (同上)

    减量:r.decrby("age") (同上)

    批量设置:r.mset({"key1":"value1", "key2":"value2"})

    批量获取:r.mget("key1", "key2")

  2)hash

    格式:r.hset(name, key, value)

    设置数据:r.hset("myhash","name","fiona")

    批量设置数据:r.hmset("myhash",{"name":"fiona","age":18})

    获取数据:r.hget("myhash","name")

    获取所有数据:r.hgetall("myhash")

    获取指定成员值:r.hmget("myhash","name","age")

    删除指定成员field:r.hdel("myhash","name")

    删除整个hash key:r.delete("myhash")

    增加:r.incrby("myhash","age", amount=1) (同上面string的incrby)

    判断field是否存在:r.exists("myhash","age")

    查看成员包含的fields个数:r.hlen("myhash")

    查看成员包含的所有field:r.hkeys("myhash")

    查看成员包含的所有values:r.hvals("myhash")

  3)list

    向list左边/右边插入数据:r.lpush("mylist","a",'b','c')、r.rpush("mylist",1,2 ,3)

    查看list的值:r.lrange("myhash", 0,-1)、r.lrange("mylist",0,-2)

    弹出左边/右边值:r.lpop("myhash")、r.rpop("mylist")

    只有当key存在的时候,才能正确执行:r.lpushx("mylist1","aa")

    从左到右删除指定个数的指定元素:r.lrem("mylist", 2,"a")

    从右到左删除指定个数的指定元素:r.lrem("mylist",-2,'b')

    删除所有的指定元素:r.lrem("mylist",0,'c')

    删除指定key:r.delete("mylist")

    替换指定位置的元素:r.lset("mylist", 1, "aaa")  将第二个元素设置为aaa

    在某个元素之前/之后插入新的元素:r.linsert("mylist","before/after","aaa",'vvv')

    从原列表中弹出最后一个元素并保存到新列表中:r.rpoplpush("mylist", "mylist1")

  4)set

    添加元素:r.sadd("myset","a",'b')

    查看所有元素:r.smembers("myset")

    判断某个元素是否存在集合中:r.sismember("myset","a")

    求两个集合的差集:r.sdiff("myset","myset1")

    求两个集合的差集并将差集保存在新的集合中:r.sdiffstore('newset',"myset","myset1")

    求两个集合的并集:r.sunion("myset","myset1")

    求两个集合的并集并将差集保存在新的集合中:r.sunionstore('newset',"myset","myset1")

    求两个集合的交集:r.sinter("myset","myset1")

    求两个集合的交集并将差集保存在新的集合中:r.sinterstore('newset',"myset","myset1")

    求集合中元素的个数:r.scard("myset")

    从集合中随机取出一个元素:r.srandmember("mylist")

  5)zset

    添加元素:r.zadd("myzset",)

    

    

    

注一:

1)如果远程连接报错‘由于目标计算机积极拒绝,无法连接’的错误,可能是以下几个原因导致的:

  a)将配置文件中的bind 127.0.0.1 注释掉,这个限制了只允许本机访问

  b)关闭redis的保护模式(protected-mode),这里的保护模式是指是否允许其他ip的设备访问redis,如果开启的话,就是只允许本机访问了。

  c)给redis设置密码(requirepass)。如果只是Linux本机调试,可以跳过此步,但是如果要开放给外网访问,就必须给redis设置密码。

  注意:以上的设置都仅仅只是用于基于学习环境,正式的开发生产环境是一定不能这样子设置的。

  上面设置完成后,重启redis服务,再远程连接,应该就没有什么问题了。

猜你喜欢

转载自www.cnblogs.com/fiona-zhong/p/10300581.html