首页 > 数据库 >redis

redis

时间:2022-11-14 21:58:32浏览次数:62  
标签:name get redis Redis import pool

redis

redis 介绍

c s 架构的软件

cs架构即Client/Server架构,即客户端/服务器架构

  • redis

    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。

    它通过提供多种键值数据类型来适应不同场景下的存储需求,

    目前为止Redis支持的键值数据类型有:字符串类型 散列类型 列表类型 集合类型,

    端口默认为6379

  • nosql

    指非关系型数据库:

    1.不限于SQL

    2.没有sql

redis 为什么这么快

1.具有高性能的网络模型:IO多路复用的epoll模型,承载了非常高的并发量

2.纯内存操作,避免了很多IO

3.单线程架构,避免了线程间切换的消耗

​ 注:redis在6.x版本之前是单线程,单进程,在6.x版本之后,是多线程架构,数据操作还是使用的单线程,别的现成做数据的持久化,其他现成进行其他操作

redis的应用场景

  • 当缓存数据库使用

    ​ 1.请求进入视图后去做数据的查询[多表查询,去硬盘取数据:速度慢] 然后转成json格式字符串返回给前端

    ​ 2.请求进到视图---》去redis[内存]----》取json格式字符串---》返回给前端

  • 做计数器

    ​ 由于redis是单线程,不存在并发安全问题故而可以当作计数器使用

    场景:①统计网站的访问量,② 个人站点的浏览量,③文章的阅读量

  • 去重操作

    ​ 集合

  • 排行榜

    ​ 有序集合

    场景:①阅读排行榜,②金币排行榜 ……

  • 布隆过滤器

  • 抽奖

  • 消息队列

Redis的特性

  1. 高性能:支持超过 100K+ 每秒的读写频率。
  2. 支持多种数据类型:除了key-value类型的数据,同时还提供String,List,Set,hash,以及Ordered Set等数据结构的存储。
  3. 原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  4. 数据持久化:可以将内存中的数据保存在磁盘中,在服务器宕机或者重启时,可以重新读取使用。
  5. 单线程:避免了不必要的上下文切换以及加锁导致的一系列性能问题。
  6. 功能丰富:Redis还支持 publish/subscribe, 通知, key 过期等等特性。

redis 的安装

redis是开源软件,他是使用C语言所编写

是编译型语言,在操作系统运行,要编译成可执行文件,由于采用了IO多路复用的epoll模型,所以它不支持windows,只有linux操作系统支持epoll

由微软官方将其更改编译成了可执行的安装包,但版本没有最新版

官网

win版本的下载地址

最新5.x版本 https://github.com/tporadowski/redis/releases/

最新3.x版本 https://github.com/microsoftarchive/redis/releases

下载完一路下一步即可,具体可参照:https://www.cnblogs.com/liuqingzheng/p/9831331.html

win装完会有redis服务

建议启动服务,手动停止

客户端连接redis命令:redis-cli -h 127.0.0.1 -p 6379

  • 简单的命令

    set name lqz   # 创建名字
    get name	   # 打印名字
    ping		   #ping通主机
    
    
  • 停掉服务的方法

    1.去win服务点关闭

    2.在客户端中输入命令shutdown关闭

python操作redis

1.在pycharm上安装redis

安装命令:pip3 install redis

2.创建一个测试脚本,代码如下:

from redis import Redis

connent = Redis(host="localhost", port=6379)
# connent.set('name', 'tony')
print(connent.get('name'))
connent.close()

redis连接池

POOL.py

import redis

pool = redis.ConnectionPool(max_connections=200, host='127.0.0.1', port=6379)

redis_pool_test.py

from redis import Redis
from threading import Thread

# 直接连接
# def get_name_from_redis():
#     conn = Redis(host="localhost", port=6379)
#     print(conn.get('name'))
#     conn.close()
#
#
# for i in range(100):
#     t=Thread(target=get_name_from_redis)
#     t.start()
#
#
# import time
# time.sleep(10)


# 使用连接池链接
import redis
from POOL import pool
def get_name_from_redis():
    # 创建一个连接池,保证它是单例,全局只有一个pool对象:使用模块导入方式实现单例

    conn = redis.Redis(connection_pool=pool) # 每执行一次会从池中取一个链接,如果没有则等待
    res=conn.get('name')
    print(res)
    conn.close()


for i in range(100):
    t=Thread(target=get_name_from_redis)
    t.start()


import time
time.sleep(10)

标签:name,get,redis,Redis,import,pool
From: https://www.cnblogs.com/nirvana001/p/16890563.html

相关文章

  • 今日内容 登录注册前端,短信注册接口和redis的介绍和使用
    短信注册接口post请求后端路由:127.0.0.1:8080/api/v1/userinfo/user/register视图类/views.pyclassUserView(ViewSet):@action(methods=['POST'],detail=F......
  • redis 的安装
    下载地址https://redis.io/download/安装步骤#安装gccyuminstallgcc#把下载好的redis-5.0.3.tar.gz放在/opt文件夹下,并解压wgethttp://download.redis.io......
  • redis
    1redis介绍#介绍cs架构的软件redis:非关系型数据库【存数据的地方】nosql数据库,内存存储,速度非常快,可以持久化【数据从内存同步到硬盘】,数据类型丰富【5大数据......
  • 【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & st
    本文介绍使用LinuxVM如何连接到AzureRedis,通过SSL方式(6380)或非SSL方式(6379)问题描述在AzureRedis的官方文档中,介绍了在Windows下,如何通过redis-cli.exe连接Redi......
  • luffy之短信注册接口和登入和注册前端和redis
    一、短信注册接口#注册前端就只有一个短信注册那么接收的就只需要接收三个参数即可mobile,password,code#视图类classUserView(ViewSet):@action(meth......
  • 一口气说出 Redis 16 个常见使用场景
    目录缓存数据共享分布式分布式锁全局ID计数器限流位统计购物车用户消息时间线timeline消息队列抽奖点赞、签到、打卡商品标签商品筛选用户关注、推荐模型排行榜1、缓存Strin......
  • golang redis队列实现
    记录一下packageredisimport("bytes""encoding/json""errors")typeJobstruct{JobIdstring`json:"job_id"`Uiduint64`json:"uid"`......
  • Nodejs+Redis实现简易消息队列
    前言消息队列是存储数据的一个中间件,可以理解为一个容器。生产者生产消息投递到队列中,消费者可以拉取消息进行消费,如果消费者目前没有消费的打算,则消息队列会保留消息,直......
  • 一些网络编程方面的总结,以及redis、memcache、nginx组件的一些介绍
    网络编程主要关注的一些问题主要关注3个方面的问题连接的建立连接的断开消息的发送和到达连接的建立主要分为两种情况:服务器处理接受客户端的连接;服务端作为客户......
  • docker 搭建redis 集群
    一、创建6个redis节点的配置文件bind0.0.0.0port6381databases1save36001save300100save6010000dbfilenamedump6381.rdbdir./appendonlyyesa......