程序下载http://down.51cto.com/data/2440789:
点击客户端进行连接测试,出现下图说明测试成功
语法:
redis的字符串操作 set(key,value,ex=None,px=None,nx=False,xx=False) 在redis中设置值,默认,不存在则创建,存在则修改 参数: ex:过期时间(秒) px: 过期时间(毫秒) nx:如果设置为True,则只有key不存在时。当前set才会执行 xx:如果设置为True,则只有key存在时,当前set才会执行 setnx(key,value) 设置值,只有key不存在时,执行设置操作 setex(key,value,time) 设置值 参数: time:过期时间单位是秒 psetex(key,value,time) 设置值 参数: time:过期时间单位是毫秒 mset(*args,**kwargs) 批量设置值 如: mset k1 v1 k2 v2 或者mset(k1='v1',k2='v2') getset(key,value) 设置新值并返回原来的值 getrange(key,start,end) 获取子序列(根据字节获取,非字符) 参数: key: redis的key start:起始位置(字节) end: 结束位置(字节) 如:“张三”,0-3表示“张” setrange(key,offset,value) 修改字符串内容。从指定字符串索引开始向后替换(新值太长时,则向后添加) 参数: offset: 字符串的索引,字节(一个汉字三个字节) value: 要设置的值 setbit(key,offset,value) 对key对应的二进制表示的位进行操作 参数: key: redis的key offset:位的索引(将值变为二进制后再进行索引) value: 值只能是0或1 例: 如果在redis中有一个对应:n1 = "foo" 那么字符串“foo”的二进制表示为:01100110 01101111 01101111 如果执行setbit('n1',7,1)则就会将第七位设置为1 那么最终二进制则变成 01100111 01101111 01101111 即“goo” 代码实现 127.0.0.1:6379> set n1 foo OK 127.0.0.1:6379> setbit n1 7 1 (integer) 0 127.0.0.1:6379> get n1 "goo" 127.0.0.1:6379> 用处: 如QQ统计在线人数,并且看谁在线: 让1代表在线。0代表不在线 offset代表用户对应的ID 如果用户上线,则将该ID设置为1 用bitcount统计有多少个1,即有多少用户在线 用getbit查看用户是否在线 代码实现: 127.0.0.1:6379> setbit QQ 55 1 (integer) 0 127.0.0.1:6379> setbit QQ 1000 1 (integer) 0 127.0.0.1:6379> bitcount QQ (integer) 2 127.0.0.1:6379> getbit QQ 55 (integer) 1 127.0.0.1:6379> getbit QQ 66 (integer) 0 127.0.0.1:6379> append(key,value) 在redis,key对应的值后追加 参数: key: redis的key value: 要追加的字符串 例子: 127.0.0.1:6379> get zhang "san" 127.0.0.1:6379> append zhang san (integer) 6 127.0.0.1:6379> get zhang "sansan" 127.0.0.1:6379> del key 删除key hash 如果需要存一个班级的姓名等信息 127.0.0.1:6379> hset info key duwentao (integer) 1 127.0.0.1:6379> hset info age 20 (integer) 1 127.0.0.1:6379> hset info id 1 (integer) 1 127.0.0.1:6379> hgetall info 1) "key" 2) "duwentao" 3) "age" 4) "20" 5) "id" 6) "1" 127.0.0.1:6379> hget info age "20" 127.0.0.1:6379> hkeys info #查看有多少key 1) "key" 2) "age" 3) "id" 127.0.0.1:6379> hvals info #查看有多少value 1) "duwentao" 2) "20" 3) "1" hmset key field value [field value ...] 用法: 127.0.0.1:6379> hmset li k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> hgetall li 1) "k1" 2) "v1" 3) "k2" 4) "v2" 5) "k3" 6) "v3" hget key field 在key对应的hash中获取根据key获取value hmget key field [field ...] 用法: 127.0.0.1:6379> hmget li k1 k2 1) "v1" 2) "v2" hlen(key) 获取有几个key hkeys(key) 获取key对应的hash中所有key的值 hvals(key) 获取key对应的hash中所有的value值 hexists key field 检查key对应的hash是否存在当前传入的key hincrby key field increment 自增加 127.0.0.1:6379> hincrby info age 1 (integer) 21 127.0.0.1:6379> hincrby info age 1 (integer) 22 hscan key cursor [MATCH pattern] [COUNT count] 起到一个过滤的作用 如 hscan info 0 match *a* 列表: lpush(从左边放)和rpush(从右边放) 127.0.0.1:6379> lpush keys1 zhangsan lisi wanger (integer) 3 127.0.0.1:6379> LRANGE keys1 0 -1 1) "wanger" 2) "lisi" 3) "zhangsan" 127.0.0.1:6379> RPUSH keys2 zhangsan lizi wanger (integer) 3 127.0.0.1:6379> LRANGE keys2 0 -1 1) "zhangsan" 2) "lizi" 3) "wanger" 127.0.0.1:6379> lpushx key value 在key对应的list中添加元素,只对key已经存在时,值添加到列表的最左边 rpushx key value 在key对应的list中添加元素,只对key已经存在时,值添加到列表的最右边 llen key key对应的list元素个数 LINSERT key BEFORE|AFTER pivot value 在key对应的列表的某一个值前或后插入一个新值 参数: key: redis的key BEFORE|AFTER: 在什么或者后 privot: 标杆值,即在他前后插入数据 value: 要插入的数据 lset key index value 对key对应的list中的某一个索引位置进行重新赋值 参数: key: redis的key值 index:list的索引位置 value:要设置的值 lrem key count value 在key对应的list中删除指定的值 参数: key:redis的key value:要删除的值 count: count=0: 删除列表中所有的指定的值 count=2: 从前向后,删除两个 count=-2:从后向前,删除两个 lpop key 在key对应的列表的左侧获取第一个元素并在列表中删除,返回值则是第一个元素。 lindex key index 在key中对应的列表中根据索引获取列表元素 LRANGE key start stop 在key对应的列表分片获取数据 参数: key: redis的key start:索引的起始位置 end: 索引的结束位置 LTRIM key start stop 在key对应的列表中移除没有在start stop索引之间的值 参数: key:redis的key start:索引的起始位置 stop:索引的结束位置 RPOPLPUSH source destination 从一个表中取出最右边的元素,同时将其添加至另一个列表的最左边 参数: source: 要取出数据的列表的key destination:要添加数据的列表的key BRPOPLPUSH source destination timeout 从一个列表的右侧移除一个元素并将其添加到另一个列表的左侧 参数: source:取出并移除元素的列表对应的key destination:要插入元素的列表对应的key timeout:当source对应的列表中没有数据时,阻塞等待其数据的超时时间(秒),0表示永远堵塞 集合: sadd key member [member ...] key对应的集合中添加元素(无重复,无序) 如: 127.0.0.1:6379> sadd names3 zhangsan zhangsan lisi lisi 3 3 (integer) 3 127.0.0.1:6379> SMEMBERS names3 #获取所有值 1) "3" 2) "lisi" 3) "zhangsan" scard key 获取key对应的集合中的元素个数 sdiff key [key ...] 在第一个key对应的集合中且不在其他key对应的集合中的元素 sdiffstore destination key [key ...] 在第一个key对应的集合中且不在其他key对应的集合中的元素,把他添加到destination里 SINTER key1 [key2] 返回给定所有集合的交集 SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中 SISMEMBER key member 判断 member 元素是否是集合 key 的成员 SMEMBERS key 返回集合中的所有成员 SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合 SPOP key 移除并返回集合中的一个随机元素 SRANDMEMBER key [count] 返回集合中一个或多个随机数 SREM key member1 [member2] 移除集合中一个或多个成员 SUNION key1 [key2] 返回所有给定集合的并集 SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中 SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素 有序集合: ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数 ZCARD key 获取有序集合的成员数 ZCOUNT key min max 计算在有序集合中指定区间分数的成员数 ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中 ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量 ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合成指定区间内的成员 ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员 ZRANK key member 返回有序集合中指定成员的索引 ZREM key member [member ...] 移除有序集合中的一个或多个成员 ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员 ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员 ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员 ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定区间内的成员,通过索引,分数从高到底 ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分数区间内的成员,分数从高到低排序 ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 ZSCORE key member 返回有序集中,成员的分数值 ZUNIONSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中 ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)
安装python 模块
pip3 install redis
Python 线程池连接redis
普通连接redis
管道:一次可以执行多个命令
import redis pool = redis.ConnectionPool(host='127.0.0.1',port=6379) #连接池 #r = redis.Redis(host='127.0.0.1',port=6379) r = redis.Redis(connection_pool=pool) pipe = r.pipeline(transaction=True) r.set('foo','bar') r.set('zhangsan','heheheh') pipe.execute()
实现订阅和发布
服务端(发布端):
import redis pool = redis.ConnectionPool(host="127.0.0.1",port='6379') rc = redis.Redis(connection_pool=pool) while True: mes = str(input("请输入要发布的内容:")) rc.publish('fm100.5', mes)
客户端(订阅端):
import redis pool = redis.ConnectionPool(host="127.0.0.1",port='6379') rc = redis.Redis(connection_pool=pool) ps = rc.pubsub() #打开 ps.subscribe(['fm100.5']) #调频 for item in ps.listen(): #监听 if item['type'] == 'message': data = item['data'] print(data.decode('utf-8'))
微信公众号
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。