使用Python读写Redis字符串

一、简介

Redis 是一个key-value存储系统。和Memcached相似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操做,并且这些操做都是原子性的。在此基础上,redis支持各类不一样方式的排序。与memcached同样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了master-slave(主从)同步。python

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合能够对关系数据库起到很好的补充做用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便,Redis支持主从同步。数据能够从主服务器向任意数量的从服务器上同步,从服务器能够是关联其余从服务器的主服务器。这使得Redis可执行单层树复制。盘能够有意无心的对数据进行写操做。因为彻底实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。redis

二、安装 Python 的 redis-py库

 [root@redis-120-20 ~]# pip3 install redis

三、链接

redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。数据库

redis链接实例是线程安全的,能够直接将redis链接实例设置为一个全局变量,直接使用。若是须要另外一个Redis实例(or Redis数据库)时,就须要从新建立redis链接实例来获取一个新的链接。同理,python的redis没有实现select命令。缓存

 # 第一种方式:普通
 importredis
 redis_connredis.Redis(host='172.17.120.20'port6301password'rds6301_paswd'db0)
 # 第二种方式:链接池
 importredis
 redis_poolredis.ConnectionPool(host='127.0.0.1'port6379password'rds6301_paswd'db0)
 redis_connredis.Redis(connection_poolredis_pool)

四、向字符串中写入数据

 # redis_conn.set(key,value)
 redis_conn.set('ywm''test1')

五、设置多个键值

 # hmset key FIELD1 VALUE1 ...FIELDN VALUEN  
 redis_conn.hmset('ywm6', {'k1':'v1''k2''v2'})

六、按字节截取字符串

 r.set('book','Mastering Redis')
 r.getrange('book',0,5)  # 结果 Master
 r.getrange('book',-5,-1)  # 结果 Redis
 r.getrange('book',0,-7)  # 结果 Mastering

七、向字符串中读取数据

 # redis_conn.get(key)
 redis_conn.get('ywm')

八、获取多个值

 # hmset key FIELD1 ...FIELDN
 redis_conn.hmget('ywm6''k1''k2')

九、设置字符串的过时时间

 # set(name, value, ex=None, px=None, nx=False, xx=False)
 ex:过时时间(秒),时间到了后redis会自动删除
 px:过时时间(毫秒),时间到了后redis会自动删除。ex、px二选一便可
 nx:若是设置为True,则只有name不存在时,当前set操做才执行
 xx:若是设置为True,则只有name存在时,当前set操做才执行
 redis_conn.set('ywm''test2'ex=10)

十、若是字符串的值为数字,能够自增和自减

 # redis_conn.set(key,n)
 redis_conn.set('ywm''5')
 redis_conn.incr('ywm''1'#自增1
 redis_conn.decr('ywm''3'#自减3

十一、向redis中添加一个字符串,key为kingname,value为如今时间

 importredis
 importdatetime
 redis_connredis.Redis(host='172.17.120.20'port6301password'rds6301_paswd'db1)
 nowdatetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
 redis_conn.set('ywm',now)

十二、按字节替换字符串指定位置的内容

 redis_conn.set('book','Mastering Redis')
 redis_conn.setrange('book',10,'MongoDB'# Redis替换后为MongoDB
 redis_conn.setrange('book',20,'2017'# 空白处被"\x00"填充

1三、获取hash中键值对的个数

 redis_conn.hmset("dic_name",{"a1":"aa","b1":"bb"})
 redis_conn.hlen("dic_name")

1四、获取hash中全部的key的值

 redis_conn.hmset("dic_name",{"a1":"aa","b1":"bb"})
 redis_conn.hkeys("dic_name")

1五、获取hash中全部的value的值

 redis_conn.hmset("dic_name",{"a1":"aa","b1":"bb"})
 redis_conn.hvals("dic_name")

1六、检查name对应的hash是否存在当前传入的key

 redis_conn.hmset("dic_name",{"a1":"aa","b1":"bb"})
 redis_conn.hexists("dic_name","a1"#输出:True

1七、删除指定name对应的key所在的键值对

 redis_conn.hmset("dic_name",{"a1":"aa","b1":"bb"})
 redis_conn.hdel("dic_name","a1")

1八、自增hash中key对应的值,不存在则建立key=amount(amount为整数)

 redis_conn.hincrby("demo","a",amount=2)
相关文章
相关标签/搜索