首页 > 数据库 >缓存数据库redis 及各种value数据类型的使用

缓存数据库redis 及各种value数据类型的使用

时间:2023-03-07 20:36:57浏览次数:42  
标签:set name res redis value 数据类型 conn

Redis介绍与安装

redis:缓存数据库(大部分时间做缓存,不仅仅可以做缓存),非关系型数据库【区别与mysql关系型数据库】
   nosql :非关系型数据库
   c语言写的 服务(监听端口),用来存储数据的,数据是存储在内存中 取值,放值速度非常块,10w qps

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


   
区别:
"""
redis: 内存数据库(读写快)、非关系型(操作数据方便、数据固定)
mysql: 硬盘数据库(数据持久化)、关系型(操作数据间关系、可以不同组合)

大量访问的临时数据,才有redis数据库更优
"""
"""
1、官网下载:安装包或是绿色面安装
2、安装并配置环境变量

# 官网:https://redis.io/
     下载完是源代码:c语言源码 :https://redis.io/download/#redis-stack-downloads
     最稳定:6.x
     最新7.x
     公司里 5.x比较多
# 中文网:http://redis.cn/download.html
      上面最新只到5.x
    
# 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
  
"""

安装一路下一步,安装完释放两个命令,会把redis自动加入到服务中
   redis-server    # mysqld 服务端的启动命令
   redis-cli       # mysql  客户端的启动命令
安装目录
    redis-server
    redis-cli
    redis.windows-service.conf  配置文件
       bind  127.0.0.1  # 服务,跑在的地址
       port  6379       # 监听的端口

启动redis 
   方式一:
      在服务中,点击启动,后台启动
   方式二:使用命令
       redis-server  指定配置文件,如果不指定,会默认

客户端连接redis
    1 方式一:
        cmd输 redis-cli  # 默认连接本地6379端口
    2 方式二:
        redis-cli -h 地址 -p 端口

     3 使用图形化界面操作 
       Redis Desktop Manager :开源的,原来免费,后来收费了  推荐用(mac,win,linux 都有)
             Qt5  qt是个平台,专门用来做图形化界面的 
             可以使用c++写
             可以使用python写  pyqt5  使用python写图形化界面 (少量公司再用)
             resp-2022.1.0.0.exe 一路下一步,安装完启动起来
        Redis Client  小众
        
        图形化界面,连接redis 输入地址和端口,点击连接即可

# redis默认有16个库,默认连进去就是第0个

Redis普通连接和连接池

python  相当于客户端,操作redis
安装模块:pip install redis

补充:django 中操作mysql 没有连接池,一个请求就是一个mysql连接
    可能有问题,并发数过高,导致mysql连接数过高,影响mysql性能
    使用django连接池:下载模块django-redis
    https://blog.51cto.com/liangdongchang/5140039

普通连接

安装redis模块:pip install redis

1 导入模块的Redis类
from redis import Redis
2 实例化得到对象
conn = Redis(host='127.0.0.1',port=6379)
3 使用conn 操作redis
获取name的值
res = conn.get('name')  # 返回数据是bytes格式

4 设置值
conn.set('age',19)

conn.close()

连接池连接

pool.py

import redis
POOL=redis.ConnectionPool(max_connections=10,host='127.0.0.1',port=6379)  # 创建一个大小为10的redis连接池

测试代码
import redis
from threading import Thread
from pool import POOL
# 做成模块后,导入,无论导入多少次,导入的都是那一个POOL对象
def task():
   conn= redis.Redis(connection_pool=POOL) # 报错的原因是拿连接,池里不够了,没有等待,线程报错设置等待,参数
   print(conn.get('name'))

for i in range(100):
   t=Thread(target=task) # 每次都是一个新的连接,会导致的连接数过多
   t.start()
   

单例模式:设计模式  23种设计模式
   全局只有一个这个对象
   p1=Person()  # p1 对象
   p2=Person()  # p2 新对象
   
   单例模式的6种方式
      1模块导入
        。。。。。

Redis之字符串类型

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

5 种数据类型,value类型
   字符串:用的最多,做缓存,做计数器
   列表:简单的消息队列
   字典(hash):缓存
   集合:去重
   有序集合:排行榜

字符串类型使用

"""
长风破浪会有时 直挂云帆济沧海
@time: 2023/3/7 19:18
"""
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','篮球1',ex=3)
# conn.set('hobby','篮球1',px=3)
# conn.set('hobby', 'lqz', nx=True)
# conn.set('name', 'lqz', xx=True)

# redis --》实现分布式锁 底层基于nx实现的

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

# 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'))

# 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',-2)

# 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/xm15/p/17189502.html

相关文章

  • 路飞-day8——前端登陆注册页面、redis介绍与安装、redis普通连接与连接池、redis之字
    目录一、前端登录注册页面1.1分析1.2登陆组件多方式登录短信登录1.3注册组件1.4代码展示Login.vueRegister.vueHeader.vue二、Redis介绍与安装三、Redis普通连接和连接池5.......
  • Redis 的16种妙用方法
    1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String类型,因为Redis是分布式的独立服......
  • redis缓存数据库
    redis缓存数据库redis介绍与安装缓存数据库,非关系型数据库(nosql),由c语言写的服务端用于在内存中存取数据(读取速度快)速度快的原因有纯内存操作网络模型使用的IO多......
  • Redis的介绍安装以及启动与使用还有五大数据类型
    目录一、介绍Redis1.详细介绍2.介绍总结二、安装启动以及运行Redis1.Redis的安装步骤2.Redis的启动方法3.图形化界面使用Redis4.pycharm使用Redis三、redis五大数据类......
  • Redis
    目录Redis介绍与安装官网下载安装启动redis存储方式图形化客户端操作下载图形化工具连接redis服务器python连接redis下载模块导入模块链接池链接单例模式多线程链接池链接R......
  • redis 基础1(包含介绍,安装)
    Redis介绍安装#关于redis-1.redis是一个缓存型数据库【大部分时间做缓存,但是不仅仅可以做缓存】-2.redis是一个非关系型(nosql)数据库【区别于mysql】-3......
  • Ubuntu 通过 docker 运行 redis
    1、首先拉取redis的镜像dockerpullredis2、运行redis容器dockerrun--nameredis-p6379:6379-dredis--nameredis#容器实例的名称-p6......
  • 1 登录页面分析 2 登录页面 3 注册页面 4 Redis介绍与安装 5 Redis普通连接和连接池 6
    目录1登录页面分析1.1Login.vueHeader.vue2登录页面2.1Login.vue3注册页面Register.vueHeader.vue4Redis介绍与安装5Redis普通连接和连接池5.1普通连接5.2连接池......
  • C# 数据类型转换(Casting)
    C#数据类型转换(Casting)C#中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身......
  • redis缓存雪崩、击穿、穿透
    用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔......