当前位置: 首页 > news >正文

【JS逆向基础】数据库之redis

前言:Redis(Remote Dictionary Server)是一个开源的高性能键值数据库,广泛用于缓存、消息队列、实时统计、排行榜等场景,这篇文章就简单介绍一下这个使用也比较广泛的数据库的功能。

1 初识简介

Redis (Remote Dictionary Server ,远程字典服务) 是一个使用ANSIC编写的开源、支持网络、基于内存、可选持久性的键值对存储数据库,是NoSQL数据库,

redis的出现主要是为了替代早期的Memcache缓存系统的。map内存型(数据存放在内存中)的非关系型(nosgl)key-value(键值存储数据库,支持数据的持久化(基于RDB和AOF,注:数据持久化时将数据存放到文件中,每次启动redis之后会先将文件中数据加载到内存,经常用来做缓存、数据共享、购物车、消息队列、计数器、限流等。(最基本的就是缓存一些经常用到的数据,提高读写速度)。

2 Redis的数据类型及主要特性

Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:Sting类型、哈希类型、列表类型、集合类型和顺序集合类型。

redis=( "name" :"yuan", "age":"23", "scors":[78,79,98,], "info":{"gender":"male","tel":"110"}, "set":{l,2,3}, "zset":{1,2,3} )

使用以下命令启动redis服务端

redis-server C:/tool/redis/redis.windows.conf

3 常用操作

  • 自增自减

# web开发中的电商抢购、秒杀。游戏里面的投票、攻击计数。系统中计算当前在线人数、
set id 1
incr id   # 相当于id+1
get id    # 2 
iner id   #相当于id+1
get id    #3
set goods_id_1 10
decr goods_id_1    #相当于 id-1
get goods_id_1     #"9"
decr goods_id_1    #相当于id-1
get goods_id_1 #8
set age 22
incrby age 2 #自增自减大于1的值时候用incrby
  • 获取字符串的长度

set name xiaoming
strlen name    #8

4 key操作

redis中所有的数据都是通过key(键)来进行操作,这里我们学习一下关于任何数据类型都通用的命令

(1)查找键
#参数支持简单的正则表达式
keys pattern
#查看所有键
keys *
#例子:
#查看名称中包含 a 的键
keys a
#查看以a开头的键
keys a*
#查看以a结尾的键
keys *a
(2)判断键是否存在
#如果存在返回1,不存在返回 0
existp keyl
#判断键 title 是否存在
exists title

5 Python操作redis

  • 连接redis

#方式1
import redis
r=redis.Redis(host='127.0.0.1', port=6379)
r.set('foo','Bar')
print(r.get('foo'))
#方式2
import redis
pool =redis.ConnectionPool(host='127.0.0.1', port=6379)
r= redis.Redis(connection_pool=pool)
r.set('bar','Foo')
print(r.get('bar'))
  • python操作方式

# 三:list操作
r.rpush("scores","100","90","80")
r.rpush("scores","70")
r.lpush("scores","120")
print(r.lrange("scores",0,-1)) #【'120','100','90','80','70']
r.linsert("scores","AFTER","100",95)
print(r.lrange("scores",0,-1)) #【'120','100','95','90','80','70']
print(r.lpop("scores"))        #120
print(r.rpop("scores"))        #70
print(r.lindex("scores",1))   #95#四 : 集合操作
# key对应的集合中添加元素
r.sadd("name set","zhangsan","lisi","wangwu")
# 获取key对应的集合的所有成员
print(r.smembers("name set"))#{'lisi','zhangsan', 'wangwu'}
print(r.srandmember("name set",2))# 从key对应的集合中随机获取 numbers 个元素
r.srem("name set","lisi")
print(r.smembers("name set")) #{'wangwu','zhangsan'}
#五 :有序集合操作
# 在key对应的有序集合中添加元素
r.zadd("jifenbang",{"yuan":78,"rain":20,"alvin": 89, "eric": 45})#按照索引范围获取key对应的有序集合的元素
print(r.zrange("jifenbang",0,-1))#['rain', 'eric','yuan', 'alvin']
print(r.zrange("jifenbang",0,-1,withscores=True))#[('rain', 20.0),('eric', 45.0),('yuan', 78.0),('alvin',89.0)]
print(r.zrevrange("jifenbang",0,-1,withscores=mrue)) #[('alvin',89.0),('yuan',78.0),('eric',45.0),('rain', 20.0)]
print(r,zrangebyscore("jifenbang",0,100))  #['rain', 'eric','yuan', 'alvin']
print(r,zrangebyscore("jifenbang",0,100,start=0,num2))#['rain', 'eric']# 删除key对应的有序集合中值是values的成员
print(r.zrem("jifenbang","yuan"))    #删除成功返回1
print(r.zrange("iifenbang",0,-1) #['rain','eric','alvin']#五 :有序集合操作
# 在key对应的有序集合中添加元素
r.zadd("jifenbang",{"yuan":78,"rain":20,"alvin": 89,"eric": 45})
# 按照索引范围获取key对应的有序集合的元素
print(r.zrange("jifenbang",0,-1))#['rain','eric','yuan', 'alvin']
print(r.zrange("jifenbang",0,-1, withscores=True)) # [('rain', 20.0),('eric',45.0),('yuan', 78.0),('alvin',89.0)]
print(r.zrevrange("jifenbang",0,-1,withscores=rrue))#[('alvin',89.0),('yuan',78.0),('eric', 45.0),('rain', 20.0)]
print(r.zrangebyscore("jifenbang",0,100))#['rain', 'eric', 'yuan', 'alvin']
print(r.zrangebyscore("jifenbang",0,100,start=0,num=2))#['rain', 'eric']# 删除key对应的有序集合中值是values的成员
print(r.zrem("jifenbang","yuan"))       # 删除成功返回1
print(r.zrange("jifenbang",0,-1))       #['rain','eric', 'alvin']#六 :键值对操作
r.delete("scores")
print(r.exists("scores"))
print(r.keys("*"))
r.expire("name",10)
http://www.dtcms.com/a/289524.html

相关文章:

  • TypeScript环境安装和操作
  • 将 VHD/VHDX 转换为物理磁盘
  • 无 sudo 权限的环境下将 nvcc (CUDA Toolkit) 安装到个人目录 linux
  • 虚拟地址空间
  • rman清理归档
  • 2024年全国青少年信息素养大赛Scratch编程挑战赛 小低组初赛
  • 【JDK内置工具】常用工具和实战指令
  • 贝叶斯分类器的相关理论学习
  • 力扣面试150(34/150)
  • 人脸识别:AI 如何精准 “认人”?
  • Florence2-通用表征完成多种视觉任务的视觉基础模型
  • 最新轻量美化表白墙系统源码v2.0 带后台版 附搭建教程
  • 分治算法---归并
  • 智能制造——48页毕马威:汽车营销与研发数字化研究【附全文阅读】
  • Muduo库中单例模式详解
  • 【Anaconda】Conda 虚拟环境打包迁移教程
  • 基于ACPs协议的智能体互联网示例(多智能体旅游规划)
  • JMeter连接数据库
  • Linux操作系统从入门到实战(十一)回车换行问题与用户缓冲区问题
  • C++虚函数易错点整理
  • 20250720-4-Kubernetes 调度-指定节点调度:nodeSelectornodeAffinity笔记
  • LeetCode 3202.找出有效子序列的最大长度 II:取模性质(动态规划)
  • JDK8默认垃圾回收器
  • (Python)类和类的方法进阶(基础教程介绍)(Python基础教程)
  • 利用核壳生物支架调控纤维 - 成骨稳态【AbMole】
  • Linux:线程控制
  • 【网络编程】网络传输-JSON
  • 【C语言】字符串与字符函数详解(下)
  • Shell脚本-cut工具
  • 从零到一MCP快速入门实战【1】