目录:
一、简介redis
二、安装redis
1.Window安装
2.Linux 源码安装
3.Ubuntu apt 命令安装
三、启动 Redis
四、配置redis
1.开启远程访问
五、启动redis
1.直接启动
2.通过指定配置文件启动
六、Redis支持的数据类型
七、操作redis
1.字符串类型String
2.列表类型list
3.集合类型set
4.哈希类型hash
5.有序集合类型 sorted set
必看:阅读之前先点击关注,测试开发干货持续更新,否则你只能看这一篇咯(点击下方链接就可以关注)
上次介绍到redis的各种数据类型的操作命令,今天我们继续讲解最重要的部分,想要玩转redis,这几种数据类型都要掌握,看完你会比开发掌握的redis还牛逼,不是我给你吹,少废话,撸代码。
1.字符串类型String
我们来看一下具体的介绍:
1.import redis
2.client = redis.StrictRedis(host='localhost', port=6379, db=0)
set()方法:单个string操作方法,用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型;
1.语法:set(name, value, ex=None, px=None, nx=False, xx=False)
参数:
ex - 过期时间(秒)
px - 过期时间(毫秒)
nx - 如果设置为True,则只有name不存在时,当前set操作才执行
xx - 如果设置为True,则只有name存在时,当前set操作才执行
# key是"name" value是"chaoge" 将键值对存入redis缓存,ex表示30s过期
client.set('name', 'chaoge', ex=30)
get()方法:单个string操作,用于获取指定 key 的值,如果key不存在,返则返回nil,如果key储存的值不是字符串类型,返回一个错误;
# 取出键name对应的值
print(client.get('name'))
mset():多个string操作,用于同时设置一个或多个key-value对;
# mset使用key:value键值对的形式来赋值
data = {'name1':'liang','name2':'chao'}
client.mset(data)
#或
client.mset({'name1':'liang','name2':'chao'})
mget():多个string操作,返回所有给定key的值;
# mget获取name1和name2的value
print(client.mget('name1','name2'))
delete():删除数据,可以根据key来指定删除数据;
# delete删掉指定的key
client.delete('name1','name2')
print(client.mget('name1','name2'))
incr():自增key对应的值,当key不存在时,则默认key=0,,否则,则自增。
#设置key:foo的值为123
client.set("foo", 123)
print(client.get("foo")) #123
#通过incr实现foo的值自增1,amount默认为1
client.incr("foo", amount=1)
print(client.get("foo")) #124
#通过incr实现foo的值自增2
client.incr("foo",2)
print(client.get("foo")) #126
应用场景 – 页面点击数
假定我们对一系列页面需要记录点击次数。例如论坛的每个帖子都要记录点击次数,而点击次数比回帖的次数的多得多。如果使用关系数据库来存储点击,可能存在大量的行级锁争用。所以,点击数的增加使用redis的INCR命令最好不过了。
decr():自减 key对应的值,当key不存在时,则默认key=0,否则,则自减。
#设置key:foo为123
client.set("foo", 123)
print(client.get("foo")) #123
client.decr("foo",3) # 递减3
print(client.get("foo")) #120
client.decr("foo" ) # 递减1
print(client.get("foo")) #119
2.列表类型list
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
lpush()方法:令将一个或多个值插入到列表头部,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作,当 key存在但不是列表类型时,返回一个错误;
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值;
# 插入一个元素
result = client.lpush('lsts','name')
print(result)
# 创建列表
lsts =('name','age','class','score')
# 插入多个元素
result = client.lpush('lsts',*lsts)
print(result)# 4
lrange()方法:返回列表中指定区间内的元素,区间以偏移量START和END指定,其中0表示列表的第一个元素,1表示列表的第二个元素,以此类推,以-1表示列表的最后一个元素, -2表示列表的倒数第二个元素,以此类推;
# 先加入进入的元素在后面,后加入的元素在前面
result = client.lrange('lsts',0,-1)
print(result)# [b'score', b'class', b'age', b'name']
lpop()方法:用于移除并返回列表的第一个元素;
1.# 从左边删除一个元素
2.result = client.lpop('lsts')
3.print(result)# b'score'
以上就是Redis的字符串String和列表类型list数据类型的基本用法,下次咱们更新剩下的三种数据类型(集合类型set,哈希类型hash,有序集合类型sorted set)操作命令!还不赶紧点击下方链接关注,测试开发干货持续更新,不然只能看这一篇啦!
2年左右的功能测试为什么要转型测试开发?
只会功能测试,找工作会越来越难,即使找到了工作,可能依旧是手工测试,工资不高,还非常辛苦!并且如果只会功能测试工作到一定年限后(通常是 35 岁以后),甚至将面临无工作可找的境地,将被行业淘汰,难道我们到了35就自甘转行吗?所有的路都要提前想到才能在未来发生困难之时不至于被动落魄的被淘汰。
其次,从企业招聘来讲,现在几乎所有企业招聘测试,都要求具备一定的代码能力、自动化测试的能力、性能测试的能力,如果你不会写代码,不会自动化,不会性能测试,不会搭建CICD持续交付能力,那你基本就丧失了找到好工作的机会;基本上三线以上的互联网公司都已经把编程和自动化作为必要的技能。所以转型侧开与否我觉得你一定有了自己的答案,35岁的功能测试和35岁的测试开发,哪个更有竞争力?结果一目了然。
功能测试想要转型测试开发,月薪冲刺25K,请联系微信:
真实案例:
一个月薪8K的北漂小姑娘,逆袭之路!
功能测试转型测试开发课程介绍
一个专科小姐姐8k薪水,学完涨薪多少?就像做梦
5.18日收到3个offer,提升前12K,你猜提升后offer多少K?