首页 > 其他 > 详细

Redis的基本操作

时间:2020-07-25 21:45:55      阅读:109      评论:0      收藏:0      [点我收藏+]

一:初识Redis

技术分享图片

1.什么是Redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

开源:早起版本2w3千行
基于键值对的存储系统:字典形式
多种数据结构:字符串,hash,列表,集合,有序集合
高性能,功能丰富

2.Redis的特性(8个

①速度快

10W OPS(每秒操作数10W,实测6W左右)

数据存在内存中(内存读写速度高达40~50G/s)

c语言实现,单线程模型

②持久化

Redis有RDBAOF机制

RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。

全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

③多种数据结构

str:字符串类型 - 接口缓存

list:列表 - 分布式

hash:哈希(相当于Python中的字典) - 缓存

set:集合 - 去重

zset:有序的 - 排行榜

④支持多种编程语言

基于TCP通信协议,各大编程语言都支持

⑤功能丰富

发布订阅(消息) Lua脚本,事务(pipeline)等

⑥简单

源代码几万行,不依赖外部库

⑦主从复制

主服务器和从服务器,主服务器可以同步到从服务器中

⑧高可用和分布式

2.8版本以后使用redis-sentinel支持高可用

3.0版本以后支持分布式

3.Redis的典型使用场景

缓存系统: 使用最广泛的就是缓存

计数器: 网站访问量,转发量,评论数(文章转发,商品销量,单线程模型,不会出现并发问题)

消息队列: 发布订阅,阻塞队列实现(简单的分布式,blpop:阻塞队列,生产者消费者)

排行榜: 有序集合(阅读排行,点赞排行,推荐(销量高的,推荐))

社交网络: 很多特效跟社交网络匹配,粉丝数,关注数

实时系统: 垃圾邮件处理系统,布隆过滤器

4.Redis的安装

安装教程:https://www.cnblogs.com/xuexianqi/p/13340227.html

5.启动的3种方式

①最简启动

redis-server
ps -ef|grep redis  #查看进程
netstat -antpl|grep redis #查看端口
redis-cli -h ip -p port ping #命令查看

②动态参数启动

redis-serve --port 6380 #启动,监听6380端口

③配置文件启动

配置文件启动(6379对应手机按键MERZ,意大利女歌手Alessia Merz的名字)

##通过redis-cli连接,输入config get * 可以获得默认配置
#在redis目录下创建config目录,copy一个redis.conf文件
#daemonize--》是否是守护进程启动(no|yes)
#port---》端口号
#logfile--》redis系统日志
#dir--》redis工作目录

二:再遇Redis

1.Python操作Redis - 普通连接

pip安装redis
pip3 install redis
导入
from redis import Redis
连接对象
conn=Redis(host=‘127.0.0.1‘, port=6379)
ret=conn.get(‘name‘)
print(ret)

2. Python操作Redis - 连接池

t_redis_pool.py
import redis
# pool必须是单例的
POOL = redis.ConnectionPool(host=‘127.0.0.1‘, port=6379,max_connections=100)  # 造一个池子,最多能放100个连接
t_redis_conn.py
import redis
# 包内的py文件,如果想右键运行,导包的时候不能带点
from t_redis_pool import POOL  # pycharm提示的错
r = redis.Redis(connection_pool=POOL)  # 只要执行这一句话,就是从池中拿出一个连接
ret=r.get(‘name‘)
print(ret)

三:又见Redis

须知:在Redis中设置值,默认,不存在则创建,存在则修改

1.String操作

set

set(self, name, value,ex=None, px=None, nx=False, xx=False, keepttl=False)

	name:key的名字
	value:key的值
    ex:过期时间(秒)
    px:过期时间(毫秒)
    nx:如果设置为True,则只有name不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
    xx:如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
conn.set(‘height‘,‘180‘)    # 基本使用

conn.set(‘height‘,‘180‘, 3)    # 设置过期时间为3秒

conn.set(‘height1‘,‘190‘,nx=True)    # 如果不存在‘height1‘,就创建并复制;如果存在,则无变化

conn.set(‘height‘,‘190‘,xx=True)    # 把存在的‘height‘的值改成190;不存在,则无变化
setnx(key, value) 只有name不存在时,当前set操作才执行;值存在,则无效
相当于set(key,value,nx=True)
setex(key, value) 设置过期时间:秒
相当于set(key,value,time)
psetex(key, value) 设置过期时间:毫秒
相当于set(key,time,value,ex=True)
mset(*args, **kwargs) 批量设置
相当于set(key,value,ex=True)

conn.mset({‘name‘:‘xxq‘, ‘age‘:‘18‘})

get

get(self, name)

	name:key的名字
conn.get(‘age‘)

Redis的基本操作

原文:https://www.cnblogs.com/xuexianqi/p/13377213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!