千家信息网

redis安装,语法和Python连接

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,程序下载http://down.51cto.com/data/2440789:点击客户端进行连接测试,出现下图说明测试成功语法:redis的字符串操作 set(key,value,ex=
千家信息网最后更新 2025年01月21日redis安装,语法和Python连接


程序下载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                删除keyhash        如果需要存一个班级的姓名等信息                        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 redispool = 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 redispool = 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 redispool = 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'))

微信公众号


0