背景,项目需要使用python做项目,如果要和其它微服务通信的话,需要验证请求体是否存在数据库。验证方式是从redis中取出session,session里面会保存了验证的信息。(只需要获取session的全数字的user_id即可)
具体代码如下:
(1)导入的包:
import redis
import re
(2)获取连接对象
r1 = redis.Redis(host='192.168.123.220', password='cwcwaaaaa', port=6379, db=0)
(3)由于是hash值,需要通过 hget() 方法来获取得到aa,然后把字节转换成字符串bb,这个时候依然是乱码的,但是数字是不会乱码的,通过正则表达式获取empid,完成!
aa = r1.hget("spring:session:sessions:027b6fd1-34de-484c-9d84-c3e5fc79f809","sessionAttr:_session_employee_")
bb = str(aa, encoding="utf-8",errors='ignore')
empid = re.findall('[0-9]{7}', bb)[0]
print(empid)
总结:就算无法把hash重新转换成具体能看懂的值,但是由于hash里面没有把数字也hash掉,所以可以获取到员工编号