不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • MySQL

  • Redis

    • 01.Redis安装
    • 02.Redis基础
    • 03.Redis底层存储 ✅
    • 04.各种数据类型操作
    • 05.Redis连接和基本操作
      • 01.Redis基本操作
        • 1、基本连接操作
        • 2、Redis中切换数据库
        • 3、操作Redis两种方法
        • 1、第一种: 操作模式
        • 2、第二种:连接池
        • 4、StrictRedis与Redis
        • 1、Redis与StrictRedis
        • 2、StrictRedis使用
      • 02.pipeline
        • 1、pipeline原理
        • 1、Redis发送数据原理
        • 2、未使用pipeline执行N条命令
        • 3、使用了pipeline执行N条命令
        • 2、pipeline性能代码展示
    • 06.Redis线程模型 ✅
    • 07.Redis持久化 ✅
    • 08.Redis集群 ✅
    • 09.雪崩穿透击穿
    • 10.Redis锁代码
    • 11.Redis缓存
    • 12.部署Redis主从
    • 13.Redis的cluster配置
    • 14.Redis哨兵模式
    • 15.Redis淘汰策略 ✅
    • 16.CAP ✅
  • Elasticsearch

  • Kafka

  • Etcd

  • MongoDB

  • TiDB

  • RabbitMQ

  • 数据库
  • Redis
xiaonaiqiang
2021-02-22
目录

05.Redis连接和基本操作

# 01.Redis基本操作

# 1、基本连接操作

import Redis
pool = Redis.ConnectionPool(host='1.1.1.3', port=6379)
r = Redis.Redis(connection_pool=pool)

#1 查看当前Redis所有key
print(r.keys('*'))

#2 delete(*names) 删除Redis对应的key的值
r.delete('num16')

#3 exists(name) 检测Redis的name是否存在
print(r.exists('name09'))

#4 keys(pattern='*') 根据模型获取Redis的name
# KEYS * 匹配数据库中所有 key 。
# KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
# KEYS h*llo 匹配 hllo 和 heeeeello 等。
# KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo
print(r.keys(pattern='name*'))        #打印出Redis中所有以name开通的key

#5 expire(name ,time) 为某个Redis的某个name设置超时时间
r.expire('name09',1)            # 1秒后就会删除这个key值name09

#6 rename(src, dst) 对Redis的name重命名为
r.rename('num13','num13new')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 2、Redis中切换数据库

# Redis 127.0.0.1:6379> SET db_number 0        # 默认使用 0 号数据库
 
# Redis 127.0.0.1:6379> SELECT 1               # 使用 1 号数据库
 
# Redis 127.0.0.1:6379[1]> GET db_number       # 已经切换到 1 号数据库,注意 Redis 现在的命令提符多了个 [1]
 
# Redis 127.0.0.1:6379[1]> SET db_number 1     # 设置默认使用 1 号数据库
 
# Redis 127.0.0.1:6379[1]> GET db_number       # 获取当前默认使用的数据库号

#1 move(name, db)) 将Redis的某个值移动到指定的db下(对方库中有就不移动)
127.0.0.1:6379> move name0 4


#2 type(name) 获取name对应值的类型
127.0.0.1:6379[4]> type name0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 3、操作Redis两种方法

# 1、第一种: 操作模式

import Redis

r = Redis.Redis(host='1.1.1.3', port=6379)
r.set('foo', 'Bar')
print(r.get('foo'))
1
2
3
4
5

# 2、第二种:连接池

  • 1)Redis-py使用connection pool来管理对一个Redis server的所有连接,避免每次建立、释放连接的开销

  • 2)默认,每个Redis实例都会维护一个自己的连接池

  • 3)可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池

import Redis
pool = Redis.ConnectionPool(host='1.1.1.3', port=6379)

r = Redis.Redis(connection_pool=pool)
r.set('foo', 'Bar')
print(r.get('foo'))
1
2
3
4
5
6

# 4、StrictRedis与Redis

# 1、Redis与StrictRedis

  • Redis-py提供两个类Redis和StrictRedis用于实现Redis的命令
  • StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedis.set方法)。
  • Redis是StrictRedis的子类,用于向后兼容旧版本的Redis-py。
  • 简单说,官方推荐使用StrictRedis方法。

# 2、StrictRedis使用

import Redis
pool = Redis.ConnectionPool(host='1.1.1.3', port=6379)

 r = Redis.StrictRedis(connection_pool=pool)
r.set('foo', 'Bar')
print(r.get('foo'))
1
2
3
4
5
6

# 02.pipeline

# 1、pipeline原理

# 1、Redis发送数据原理

  • Redis是建立在TCP协议基础上的CS架构,客户端client对Redis server采取请求响应的方式交互。
  • 一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。
  • 设想这样的一个场景
    • 你要批量的执行一系列Redis命令,例如执行100次get key,这时你要向Redis请求100次+获取响应100次。
    • 如果能一次性将100个请求提交给Redis server,执行完成之后批量的获取相应
    • 只需要向Redis请求1次,然后批量执行完命令,一次性结果,性能是不是会好很多呢?

# 2、未使用pipeline执行N条命令

# 3、使用了pipeline执行N条命令

# 2、pipeline性能代码展示

In [1]: from django_Redis import get_Redis_connection       # 导入get_Redis_connection模块
In [2]: Redis_client = get_Redis_connection('default')      # 连接Redis 0号库
    
'''方法1:使用普通方法执行'''
In [3]: for i in range(99999):
   ...:     Redis_client.set(i,i)

'''方法2:使用pipeline执行'''
In [4]: p1 = Redis_client.pipeline()           # 实例化一个pipeline对象             
In [5]: for i in range(99999):
   ...:     p1.set(i,i)                        # 把要执行的命令打包到pipeline
In [6]: p1.execute()
1
2
3
4
5
6
7
8
9
10
11
12
04.各种数据类型操作
06.Redis线程模型 ✅

← 04.各种数据类型操作 06.Redis线程模型 ✅→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式