Python开发者必备,掌握Redis实用技巧,看完这篇文章就够了

一、Redis基本配置

1、Redis定义

Redis是键值存储数据库,类似于字典。

2、内存数据库

mysql、mongodb都是以文件的形式存储在此盘上。
Redis数据存储在内存中, 操作内存的速度远远高于磁盘,并且Redis数据最终也可以存储在磁盘上。

3、Redis服务器与客户端

(1)、启动服务器

redis-server + 配置文件路径
如:redis-server C:\Program Files\Redis\redis.windows.conf

(2)、客户端连接服务器

redis-cli,其中 -h为主机ip, -a为密码

(3)、注意

配置时,需要将服务关掉,或者不使用6379端口。

4、配置文件

(1)、获取配置信息

①config get *,获取所有配置信息。
②config get 配置名,获取某个配置信息。

(2)、配置用户密码

①Redis只有密码,没有用户。
②第一步:在C:\Program Files\Redis路径下的redis.windows.conf文件中更改 requirepass foobared为requirepass 1234567
③第二步:登录时使用密码:
方法一: redis-cli -h ip地址 -a密码
方法二: 登录后, auth 密码

(3)、常见配置

①dbfilename:数据文件,dump.rdb.
②requirepass: 用户密码。
③masterauth:主机密码。
④logfile:日志文件。
⑤port:端口6379.
⑥databases:默认数据库个数,16个。
⑦loglevel:日志等级。
⑧bind:绑定ip。
⑨保存时间:save time changecount
例: save 900 1 :修改一个15分钟保存。
save 60 10000: 修改达到10000个一分钟保存。

二、Redis的5种数据类型

1、键值对的操作

①key():获取键。
②exists(k):参看键是否存在。
③type(k):查看键对应的类型。
④expire(k, time):设置有效期。
⑤ttl(k):查看剩余时间, -1表示永久。
⑥delete(k):删除键。

# 键值对应的操作
# # 1、获取键
r = client.keys()                   # <class 'list'> [b's4', b's5', b's2', b's1', b's3', b's7']

# 2、判断键是否存在
r = client.exists("s9")             # <class 'int'> 0

# 3、查看键值对对应的类型
r = client.type("s1")                 # <class 'bytes'> b'string'

# 4、设置有效期
r = client.expire("s1", 5)      # <class 'bool'> True


# 5、查看剩余时间
r = client.ttl("s1")        # <class 'int'>

# 6、删除
r = client.delete("s5")     # <class 'int'> 1

2、字符串

①set(k,v):设置单个。
②mset( { k : v, k: v,……}): 设置多个。
③setnx( k , v):不存在创建。
④setex(k, time, v):设置有效期。
⑤get(k):获取键对应的值。
⑥mget(k,k,k,……):获取多个键对应的值。
⑦incr(k):加一。
⑧incrby(k, count):增加多个。
⑨decr(k):减一。
⑩decrby(k, count):减多个。
⑪append:追加, 不覆盖。

import redis

client = redis.StrictRedis(password="123456")

# 选择数据库
client.select(3)

# 字符串
# 1、创建字符串类型并加入值
r = client.set("s1", "1")         # <class 'bool'> True

# 2、创建多个
r = client.mset({"s2": "2", "s3": 3, "s4": 4, "s5": 5})     # <class 'bool'> True

# 3、追加
r = client.append("s1", 3)        # <class 'int'> 2

# 4、获取
r = client.get("s1")              # <class 'bytes'> b'13'

# 5、获取多个
r = client.mget(["s1", "s2", "s3"])     # <class 'list'> [b'13', b'2', b'3']

# 6、设置有效期
r = client.setex("s6", 20, "666")   # <class 'bool'> True

# 7、不存在再创建
r = client.setnx("s7", 6)         # <class 'bool'> True

# 8、增加1
r = client.incr("s1")             # <class 'int'> 14

# 9、增加count
r = client.incrby("s1", 100)      # <class 'int'> 114

# 10、减少1
r = client.decr("s1")               # <class 'int'> 113

# 11、减少count
r = client.decrby("s1", 10)         # <class 'int'> 102

3、哈希

存储键值对, 键(相当于表), 字段(hash中的键)、值(键对应的值)
①hset(name, key, value):添加键值。
②hmset(name, {key: value, key: value,……}):添加多个键值对。
③hget(name, key): 根据字段获取值。
④hmget(name,[key, key]):根据多个字段获取多个值。
⑤hincrby(name, key):对数字进行加减。
⑥hgetall(name):获取所有字段和值。
⑦hkeys(name):获取所有字段。
⑧hvals(name):获取所有值。
⑨hexists(name, key):检测字段是否存在。
⑩hdel(name, key):删除字段。
⑪hlen(name):获取键长度。

# 1、设置字段和值
r = client.hset("h2", "k1", "v1")

# 2、设置多个
r = client.hmset("h2", {"k2": "v2", "k3": "v3", "k4": "400"})

# 3、获取多个
r = client.hmget("h2", ["k1", "k2", "k3", "k4"])

# 4、对数字进行加减
r = client.hincrby("h2", "k4", 200)

# 5、获取键长度
r = client.hlen("h2")

# 6、获取所有值
r = client.hvals("h2")

# 7、获取所有字段和值
r = client.hgetall("h2")

# 8、获取所有字段
r = client.hkeys("h2")


# 9、检测字段是否存在
r = client.hexists("h1", "k1")

# 10、删除
r = client.hdel("h1", "k1")     # <class 'int'> 1

# 11、获取值
r = client.hget("h2", "k1")

4、列表

存储多个数据
①lpush(name, value1, value2……):从头插入。
②rpush(name, value):从尾插入。
③lpop(name):从头删除。
④rpop(name):从尾删除。
⑤lrem(name, count, value):删除指定value,count个。
⑥lset(name, index, values):设置第index个元素为values。
⑦ltrim(name, start_index, end_index):切片。
⑧linsert(name, “before”|“after” pivot value):在pivot前后插入value。
⑨lrange(name, start_index, end_index):获取从start到end的元素。
⑩lindex(name, index):获取索引为index的元素。
⑪llen():长度。

# 列表
# 1、从头插入
r = client.lpush("l1", 1, 2, 3, 4, 5, 6, 7)     # <class 'int'> 7

# 2、从尾插入
r = client.rpush("l2",  1, 2, 3, 4, 5, 6, 7)        # <class 'int'> 7

# 3、从头删除
r = client.lpop("l1")        # <class 'bytes'> b'7'

# 4、从尾删除
r = client.rpop("l1")   # <class 'bytes'> b'1'

# 5、删除指定元素count个
r = client.lrem("l1", 2, "3")  # <class 'int'> 1

# 6、设置index为value
r = client.lset("l1", 2, "7")  # <class 'bool'> True

# 7、在value前后插入新value
r = client.linsert("l1", "after", "5", "40")

# 8、返回从start到end的值
r = client.lrange("l1", 0, 10)   # <class 'list'> [b'6', b'5', b'40', b'7', b'2']

# 9、切片
r = client.ltrim("l1", 2, 5)        # <class 'bool'> True

# 10、获取index的值
r = client.lindex("l1", 2)      # <class 'bytes'> b'2'

# 11、长度
r = client.llen("l1")       # <class 'int'> 3

5、集合

无序不重复
①sadd(name, value1, value2……):添加。
②smember(name):展示所有。
③sismenber(name, value):元素是否在集合中。
④srandmenber(name,count):随机获取count个元素。
⑤spop(name):随机删除一个元素。
⑥srem(name, value):删除指定元素。
⑦scard(name):集合中语速的数量。
⑧sinter([ name1, name2……]):返回交集。
⑨sinterstore(destination, [ name1, name2])
⑩sunion([ name1, name2……]):返回并集。
⑪sunionstore(destination, [ name1, name2])
⑫sdiff( [ name1, name2……] ):差集。
⑬sdiffstore( destination, [ name1, name2……] )

r = client.sadd("set2", 100, 200, 300, 400, 500, 600)

# 2/3获取所有元素
r = client.smembers("set2")
r = client.sismember("set2", "600")

# 4、随机删除一个元素
r = client.spop("set2")

# 5、删除指定元素
r = client.srem("set2", 300)

# 6、统计集合的个数
r = client.scard("set2")

# 7、随机获取几个参数
r = client.srandmember("set2", 3)


client.sadd("set3", 300, 400, 500, 600)
client.sadd("set4", 100, 200, 300, 400)

# 8、交集
r = client.sinter(["set3", "set4"])
r = client.sinterstore("set5", ["set3", "set4"])

# 9、并集
r = client.sunion(["set3", "set4"])
r = client.sunionstore("set6", ["set3", "set4"])


# 10、差集
r = client.sdiff(["set3", "set4"])
r = client.sdiffstore("set8", ["set4", "set3"])

6、有序集合

通过分数进行排序
①zadd(name, {v : score }):添加带有权重的元素
②zrem(name, v,v):从有序集合中移除
③zcard(name):集合个数
④zcount(name, min, max):权重在min和max之间元素的个数
⑤zrange(name, start, stop):获取指定索引范围的元素
⑥zrevrange(name, start, stop):逆序获取索引对应元素
⑦zrangebyscore(name, min , max):获取指定分值对应的元素
⑧zrevrangebyscore(name, max, min):逆序获取对应分值对应的元素
⑨zscore( name, value):获取value对应的权重

# 有序集合
# 1、添加
r = client.zadd("zset2", {"v1": 10, "a1": 20, "c1": 30})

# 2、集合个数
r = client.zcard("zset2")

# 3、权重在min,max之间 最大最小指的是权重
r = client.zcount("zset2", 0, 20)

# 4、索引查找
r = client.zrange("zset2", 0, 3)

# 5、逆序获取索引对应元素
r = client.zrevrange("zset2", 1, 3)

# 6、逆序获取对应分值对应的元素
r = client.zrevrangebyscore("zset2", 30, 10)

# 7、根据分数获取值
r = client.zscore("zset2", "a1")

# 8、移除
r = client.zrem("zset2", "v1")

# 9、获取指定分值对应的元素
r = client.zrangebyscore("zset2", 20, 30)

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值