Redis

Redis

简介

  • 百度:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
  • 说明:一个非关系型数据库,经常用来缓存数据,消息中间件的操作
  • 特性:
    • Redis执行命令的速度非常快
    • redis中的数据结构是基于键值对的
  • 优势:
    • 性能极高
    • 丰富的数据类型,字符串,哈希,列表,集合,有序集合等
    • 原子-----Redis的所有操作都是原子性的,意思是要么成功执行要么失败完全不执行
    • 丰富的特性
    • 端口:6379 MySQL—3306 SSH----22 FTP-----21 HTTP----80 HTTPS----443

常用命令

管理命令
命令说明
ping测试连接情况,成功恢复pong
exit/quit退出客户端
auth身份认证
config配置命令,用来查看选型或者进行相关配置的
info查看redis服务器相关信息
command查看可用命令
select选择库(0-15),默认在0的数据库下
flushdb清空当前库
flushall清空所有库
save前台执行持久化的时候使用(会阻塞)
bgsave后台持久化操作(不会阻塞)
keys(键)
命令说明
exists判断指定键是否存在,存在返回1,否则返回0
keys查看指定格式的键,* 表示模糊匹配
del删除指定的键
ttl查看指定键的剩余有效时间,-1 表示永久,-2表示不存在
expire给指定键设置指定的有效时间
persist取消指定键的有效时间,之后会变成永久的
move将指定的键移动到指定的库中
rename修改指定键的名字
字符串
命令说明
set设置键值对的数据
get通过键获取对应的值
mset设置多对的键值对数据
mget获取多对的键值对
getset设置键值对,并返回原来的值
setex设置键值对并赋予有效时间
append对键值对追加内容,若没有则设置键值对
strlen返回指定字符串的长度
incr数字值加一
decr数字值减一
incrby数字值加上一个指定的数
decrby数字值减去一个指定的数

字符串数据结构的应用场景

1.可以实现缓存功能

2.可以使用字符串结构的incr命令作为计数的基础工具

3.将session信息存储于Redis中,实现session

哈希
  • 说明 :一个string类型的field和value的映射表,特别适用于存储对象

    命令说明
    hset设置单个字段
    hget获取单个字段
    hmset设置多个字段
    hmget获取单个字段
    hgetall获取所有字段
    hexists判断某个键中是否有某个字段
    hlen获取指定键的字段的数量
    hdel删除指定键的指定字段
    hkeys获取指定键的所有的字段名
    hvals获取指定键的所有字段的值
    hincrby给指定键的指定字段加上一个整数(减去只要加上一个负数即可)
    hincrbyfloat指定键的指定字段加上一个浮点数
列表
命令说明
lpush从左边(头部)插入数据
lpop从左边(头部)弹出数据
lrange获取指定区间的数据,0表示开头,-1表示非常的大范围
lindex根据下标获取数据
llen统计元素的个数
lset修改指定下标的值
lrem删除个数的指定值
linsert在指定元素前或后插入数据
ltrim修剪列元素,保留开始到结束的区间,删除掉区间以外的元素
rpush从右边插入数据
rpop从右边弹出数据
set集合(集合中元素不会重复)
命令说明
sadd向集合中添加成员
smembers查看集合中所有的成员
scard统计集合中成员的数量
sismember判断某个成员是否在集合中
spop随机弹出并删除指定个数的元素,默认弹出一个
srandmemeber随机返回指定个数的元素,默认返回一个
srem删除指定元素,可一次删除多个
smove将一个集合中的成员移动到另一个集合中
sinter求交集
sinterstore求交集并保存到指定集合中
sdiff求并集减去交集(差集)
sdiffstore求差集并保存到指定集合中
sunion求并集
sunionstore求并集并保存到指定集合中
有序集合(sorted set)
  • 说明:和集合一样是string类型元素的集合,不允许重复的成员,但每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行排序(从小到大)

  • 命令说明
    zadd添加数据到有序集合
    zcard统计集合中的数量
    zcount统计指定区间范围的元素的个数
    zrange返回指定索引范围的一个元素,升序排序
    zrevrange返回指定索引范围的一个元素,降序排序
    zrangebyscore返回指定分数范围的元素,并升序排列
    zrank返回指定元素的索引,升序
    zrevrank返回指定元素的索引,降序
    zrem删除指定的元素, 可一次删除多个
    zscore返回指定元素的分数
事务操作
命令说明
multi开启事务
exec执行事务
discard取消事务
发布订阅
  • 一种消息通信模式----发送者(pub)发送消息,订阅者(sub)接收消息
命令说明
subscribe订阅一个频道或多个频道
unsubscribe取消订阅频道
publish向指定的频道发送消息
pubsub查看活跃的频道信息

python链接redis数据库

import redis
r = redis.Redis(password="123456", decode_responses=True)
r.set("xxx","yyy")
print(r.get("xxx"))
import redis
#创建连接池
pool = redis.ConnectionPool(password="123456", decode_responses=True)
#使用连接池对象去链接redis
r = redis.Redis(connection_pool=pool)
print(r.get("xxx"))
import redis
r = redis.Redis(password="123456", decode_responses=True)
#创建一个管道对象
#自己去查pipeline
pipe = r.pipeline()
try:
	#pipe.set("name", "goudan")
	#链式操作,在以后封装的sql语句,全部是链式操作
	pipe.set("name", "xiaofang").set("age",29).set("sex",1)
except Exception as e:
	print(e)
	#把管道清空
	pipe.reset()
else:
	#执行操作
	pipe.execute()
import redis
r = redis.Redis(password="123456", decode_responses=True)
#开始创建发布/订阅对象
ps = r.pubsub()
#设置订阅频道
ps.subscribe("CCTV1", "BBC")
#print(ps.listen())
#监听订阅频道
for item in ps.listen():
	#print(item)
	if item["type"] == "message":
		print(item["channel"], item["data"])
import redis
r = redis.Redis(password="123456", decode_responses=True)
channel = input("请输入您要发布的频道: ")
while True:
	message = input("请输入您要发布的内容: ")
	#向指定的指定的频道发送指定的消息
	r.publish(channel, message)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值