首页 > 数据库 >redis 基础1(包含介绍,安装)

redis 基础1(包含介绍,安装)

时间:2023-03-07 19:11:06浏览次数:38  
标签:set name 包含 res redis value 安装 conn

Redis介绍安装

# 关于redis
    -1.redis是一个缓存型数据库【大部分时间做缓存,但是不仅仅可以做缓存】
    -2.redis是一个非关系型(nosql)数据库【区别于mysql】
    -3.redis是c语言写的服务,用来存储数据,数据是存储到内存中,取值,放值速度非常快,10w qps

# 面试题:redis为什么这么快
    -1.纯内存操作
    -2.网络模型使用的IO多路复用(epoll)(可以处理的请求数更多)
    -3.6.x之前,单进程,单线程架构,没有鲜葱进程间切换,更少的消耗资源
# redis使用 key-value的形式存储,没有表的概念

# 版本问题
   最新的:7.x
   公司里:5.x比较多

# 安装
   - mac    源码编译安装
   - linux   源码编译安装
   - win     微软自己,基于源码改动编译为安装包
             5.x 版本:https://github.com/tporadowski/redis/releases/
             3.x 版本:https://github.com/microsoftarchive/redis/releases
   - 一路下一步即可,安装完cmd执行两个命令,把redis自动添加到服务中
             redis-server    服务端的启动命令    mysqld
             redis-cli       客户端的启动命令    mysql
# 安装后的目录
   redis-server
   redis-cli
   redis.window-service.conf         配置文件
        -bind 127.0.0.1      # 服务跑的地址
        -port 6379           # 监听的端口

# 启动redis
   1.方式一:
        -在服务中,点击启动,后台启动
   2.方式二:
        -redis-server 指定配置文件,不指定会按默认的

# 客户端连接redis
   1.方式一
        -redis-cli          # 默认连接本地的6379端口
   2.方式二
        -redis-cli -h 地址 -p 端口
   3.方式三
        - 使用图形化客户端操作
         -1.Redis Desktop Manager:  
开源,现在收费,老版本免费(推荐) -> 底层使用Qt5,qt是个平台,专门用来图形化界面的 -> 可以使用c++写 -> 可以使用python写 pyqt5 使用python写图形化界面 (少量公司再用) -2.Redis Client:
小众 - 图形化界面,连接redis 输入地址和端口,点击连接即可 # redis默认有16个库,默认连进去就是第0个

Redis普通连接和连接池

# python 相当于客户端,操作redis
# 安装模块: pip install redis
# 补充: django中操作mysql,没有连接池的,一个请求就是一个mysql连接
  - 可能存在问题
      并发数过高,可能导致mysq'l连接数过高,进而影响mysql性能
  - 使用django连接池:
      https://blog.51cto.com/liangdongchang/5140039

普通连接

# 1.安装redis模块
    pip install redis
# 2.导入模块的Redis类
    from redis import Redis
# 3.实例化得到对象
    coon =Redis(host='127.0.0.1',port=6379)
# 4.使用conn,操作redis
    - 获取name的值
      ->res=conn.get('name')     # 返回的数据是bytes格式
# 5.设置值
    conn.set('age',19)
    conn.close()

连接池连接

###1.创建一个pool.py
    import redis
    # 创建一个大小为10的redis连接池
    POOL = redis.ConnectionPool(max_connections=10,host='127.0.0.1',port=6379)   
###2.测试代码
    import redis
    from threading import Thread
    from pool import POOL
    def task():
         # 做成模块后,导入,无论导入多少次,导入的都是那一个POOL对象
         conn = redis.Redis(connection_pool=POOL)
         # 报错的原因是拿连接,连接池里不够了,没有等待,线程会报错,需要设置等待,参数
         print(conn.get('name'))
    for i in range(10000):
         # 每次都是一个新的连接,会导致连接池的连接数过多
         t=Thread(target=task)
         t.start()



### 单例模式
 -1.单例模式是一种设计模式【设计模式共有23种】
     - 全局只有一个 这个对象
          p1=Person()    # p1 对象
          p2=Person()    # p2 新对象
     - 单例模式的六种方式...
         

Redis字符串类型

# 1.redis 是key-value形式存储
# 2.redis 数据放在内存中,如果断电,数据丢失
      - 需要有持久化的方案

# 3.redis有5种数据类型【value类型】
      - 字符串:用的最多,做缓存;做计数器
      - 列表: 简单的消息队列
      - 字典(hash):缓存
      - 集合:去重
      - 有序集合:排行榜
        
#字符串类型使用
'''
1 set(name, value, ex=None, px=None, nx=False, xx=False)
2 setnx(name, value)
3 setex(name, value, time)
4 psetex(name, time_ms, value)
5 mset(*args, **kwargs)
6 get(name)
7 mget(keys, *args)
8 getset(name, value)
9 getrange(key, start, end)
10 setrange(name, offset, value)
11 setbit(name, offset, value)
12 getbit(name, offset)
13 bitcount(key, start=None, end=None)
14 bitop(operation, dest, *keys)
15 strlen(name)
16 incr(self, name, amount=1)
# incrby
17 incrbyfloat(self, name, amount=1.0)
18 decr(self, name, amount=1)
19 append(key, value)
'''

import redis

conn = redis.Redis()

# 1 set(name, value, ex=None, px=None, nx=False, xx=False)
# ex,过期时间(秒)
# px,过期时间(毫秒)
# nx,如果设置为True,则只有name不存在时,当前set操作才执行, 值存在,就修改不了,执行没效果
# xx,如果设置为True,则只有name存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
# conn.set('hobby','篮球',ex=3)
# conn.set('hobby','篮球',px=3)
# conn.set('name','lqz',nx=True)
# conn.set('name','lqz',nx=False)
# conn.set('hobby','篮球',xx=True)
# conn.set('hobby','篮球',xx=False)
# redis---》实现分布式锁,底层基于nx实现的


# 2 setnx(name, value)
# 等同于:conn.set('name','lqz',nx=True)
# conn.setnx('name', '刘亦菲')

# 3 setex(name, value, time)
# 等同于:conn.set('name','lqz',ex=3)
# conn.setex('wife', 3, '刘亦菲')


# 4 psetex(name, time_ms, value)
# conn.psetex('wife',3000,'刘亦菲')


# 5 mset(*args, **kwargs)
# conn.mset({'wife': '刘亦菲', 'hobby': '篮球'})


# 6 get(name)
# print(str(conn.get('wife'),encoding='utf-8'))
# print(conn.get('wife'))


# 7 mget(keys, *args)
# res=conn.mget('wife','hobby')
# res=conn.mget(['wife','hobby'])
# print(res)


# 8 getset(name, value)
# res=str(conn.getset('wife','迪丽热巴'),encoding='utf-8')
# res=conn.getset('wife','迪丽热巴')
# print(res)


# 9 getrange(key, start, end)
# res = str(conn.getrange('wife', 0, 2), encoding='utf-8')  # 字节长度,不是字符长度  前闭后闭区间
# print(res)


# 10 setrange(name, offset, value)
# conn.setrange('wife',2,'bbb')

# ---- 比特位---操作
# 11 setbit(name, offset, value)
# 12 getbit(name, offset)
# 13 bitcount(key, start=None, end=None)
# ---- 比特位---操作

# 14 bitop(operation, dest, *keys)   获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值

# 15 strlen(name)
# res=conn.strlen('hobby')   # 统计字节长度
# print(res)

# 16 incr(self, name, amount=1)
# 自增,不会出并发安全问题,单线程架构,并发量高
# conn.incr('age')
# # incrby

# 17 incrbyfloat(self, name, amount=1.0) # conn.incrbyfloat('age',1.2) # 18 decr(self, name, amount=1) # conn.decrby('age') # conn.decrby('age',-1) # 19 append(key, value) # conn.append('hobby','sb') print(conn.strlen('hobby')) conn.close() ''' 重要的: set get strlen 字节长度 incr '''

 

标签:set,name,包含,res,redis,value,安装,conn
From: https://www.cnblogs.com/juzijunjun/p/17189232.html

相关文章

  • Ubuntu18.04安装Docker完整教程
    1.更新软件源列表sudoaptupdate2.安装软件包依赖sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-common3.在系统中添加Docker的......
  • Ubuntu安装docker详细教程
    1.安装sudoapt-getupdate&&sudoapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-common&&curl-fsSLhttps://download.dock......
  • Python第三方库request的安装及基本用法
    ​1、安装安装命令:pipinstallrequests豆瓣源安装:pipinstallrequests-ihttps://pypi.douban.com/simple/​2、requests常见参数​url参数:传入的是字符串,请求地址data......
  • Ubuntu 通过 docker 运行 redis
    1、首先拉取redis的镜像dockerpullredis2、运行redis容器dockerrun--nameredis-p6379:6379-dredis--nameredis#容器实例的名称-p6......
  • 测试用例包含的字段有哪些?
    测试用例的字段根据实际情况可多可少,但是其中的一些字段是必不可少的,如下: 必须包含的字段:用例编号、模块、测试步骤、预期结果、实际结果、优先级、测试人员、......
  • ubuntu16.04 pip3显示已经安装,但是用的时候却又显示未安装
    pip3显示未安装我装行吧?What?已装?再试一遍pip3-version,结果还是老样子吐血!好吧,我脚本安装,行了吧输入wgethttps://bootstrap.pypa.io/get-pip.py接着输......
  • 1 登录页面分析 2 登录页面 3 注册页面 4 Redis介绍与安装 5 Redis普通连接和连接池 6
    目录1登录页面分析1.1Login.vueHeader.vue2登录页面2.1Login.vue3注册页面Register.vueHeader.vue4Redis介绍与安装5Redis普通连接和连接池5.1普通连接5.2连接池......
  • 腾讯云Ubuntu安装wordpress (1/3)
    主要用了下面的命令安装apachesudoaptinstallapache2-y安装mariadbsudoaptinstallmariadb-servermariadb-client-y取人mariadb是否安装成功sudosy......
  • 腾讯云Ubuntu安装wordpress (3/3)
    本篇主要是域名解析相关放到这里可能有点迟了,但买服务器的时候最好买香港,因为这样域名就不用备案了。同时买域名的时候需要实名,认证一个小时左右解析的方法,具体如下图......
  • Linux安装MySQL
    演示系统:CentOS-7-x86_64。一、软件下载线上下载:MySQLProductArchives某度下载:wget下载:wgethttps://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-1.el7.x86_6......