首页 > 数据库 >非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)

时间:2022-10-31 20:33:44浏览次数:77  
标签:__ name Redis 数据库 redis Value key print


文章目录

  • ​​1、Redis 简介​​
  • ​​1.1、简述​​
  • ​​1.2、特点​​
  • ​​1.3、优势​​
  • ​​2、CentOS 操作 Redis​​
  • ​​2.1、安装启动​​
  • ​​2.1.1、安装​​
  • ​​2.1.2、改配置​​
  • ​​2.1.3、启动​​
  • ​​2.2、常用命令​​
  • ​​2.2.1、redis-cli​​
  • ​​2.2.2、auth命令​​
  • ​​2.2.3、PING 命令​​
  • ​​2.2.4、Key命令​​
  • ​​2.2.5、GET命令​​
  • ​​2.2.6、SET命令​​
  • ​​2.2.7、DEL命令​​
  • ​​3、Python3 操作 Redis​​
  • ​​3.1、连接 Redis 的 4 种方式​​
  • ​​3.1.1、创建 redis 链接对象​​
  • ​​3.1.2、创建 StrictRedis 链接对象​​
  • ​​3.1.3、创建 ConnectionPool 连接池 链接对象​​
  • ​​3.1.4、创建 ConnectionPool 连接池 链接 url 对象​​
  • ​​3.2、常用方法​​
  • ​​3.3、源码​​
  • ​​3.4、效果图​​
  • ​​4、源码分享Github​​

1、Redis 简介

1.1、简述

Redis是一个开源的 C语言编写的Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

1.2、特点

Redis 与其他 Key - Value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

1.3、优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

2、CentOS 操作 Redis

2.1、安装启动

2.1.1、安装

Redis下载地址:http://download.redis.io/releases/

以4.0.9版本为例:

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

解压安装包并安装:

tar xzf redis-4.0.9.tar.gz
cd redis-4.0.9
make -j grep processor /proc/cpuinfo | wc -l
make install

注:通过”grep processor /proc/cpuinfo | wc -l”查看系统最大cpu核心数,通过最大核数编译可以更有效的利用CPU资源。

2.1.2、改配置

修改配置文件 etc/redis.conf :

  • 如果允许外网访问,记得修改绑定的IP,把 bind 127.0.0.1 改为:
bind 0.0.0.0
  • 如果修改端口就把 port 6379 进行修改,如果开多个端口,就生成多个配置文件,把每个配置文件的端口进行修改即可
  • 如果配置文件启动多个端口的配置文件,别忘了修改这里(默认的是6379):
pidfile /var/run/redis_6379.pid

如果想给redis加密码,再配置文件种添加 ( 如果密码是123456 ) ,默认是没有密码的:

requirepass 123456

2.1.3、启动

redis-server redis.conf

如果多个端口就开启多个redis-server+配置文件即可

2.2、常用命令

2.2.1、redis-cli

利用一下命令在服务器打开redis

redis-cli -p 端口

例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_数据库

2.2.2、auth命令

进入后,auth + 密码,如果输入正确,就可以进行后续操作了,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_python3_02

2.2.3、PING 命令

用于检测 redis 服务是否启动,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_python3_03

2.2.4、Key命令

用于正则匹配检测符合条件的有哪些key,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_redis_04

2.2.5、GET命令

get key 获取指定 key 的值,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_redis_05

2.2.6、SET命令

set key value ,设置指定 key 的值,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_数据库_06

2.2.7、DEL命令

del key,设置指定 key 的值,例如:

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_数据库_07

3、Python3 操作 Redis

3.1、连接 Redis 的 4 种方式

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_增删改查_08

3.1.1、创建 redis 链接对象

import redis

def connectRedis(h,pt,pw):
try:
r = redis.Redis(host=h, port=pt, password=pw) # host后的IP是需要连接的ip,本地是127.0.0.1或者localhost
print("Redis connection successful...")
return r
except:
print("Redis connection refused...")
return "error"

if __name__ and "__main__":
redis = connectRedis('47.105.196.123', 6379, "[email protected]_1347908642")

3.1.2、创建 StrictRedis 链接对象

from redis import StrictRedis

def connectRedis(h,pt,pw):
try:
r = StrictRedis(host=h, port=pt, password=pw)
print("Redis connection successful...")
return r
except:
print("Redis connection refused...")
return "error"

if __name__ and "__main__":
redis = connectRedis('47.105.196.123', 6379, "[email protected]_1347908642")

3.1.3、创建 ConnectionPool 连接池 链接对象

from redis import StrictRedis, ConnectionPool

def connectRedis(h,pt,pw):
try:
pool = ConnectionPool(host=h, port=pt, password=pw)
r = StrictRedis(connection_pool=pool)
print("Redis connection successful...")
return r
except:
print("Redis connection refused...")
return "error"

if __name__ and "__main__":
redis = connectRedis('47.105.196.123', 6379, "[email protected]_1347908642")

3.1.4、创建 ConnectionPool 连接池 链接 url 对象

from redis import StrictRedis, ConnectionPool

def connectRedis(h,pt,pw):
try:
url = "redis://:"+pw+"@"+h+":"+str(pt)+"/0"
pool = ConnectionPool.from_url(url)
r = StrictRedis(connection_pool=pool)
print("Redis connection successful...")
return r
except:
print("Redis connection refused...")
return "error"

if __name__ and "__main__":
redis = connectRedis('47.105.196.123', 6379, "[email protected]_1347908642")

3.2、常用方法

示例

说明

结果

redis.dbsize()

获取当前数据库中key的数目

返回长度

redis.keys(’*’)

获取所有符合规则的key

返回列表

redis.exists(key)

判断一个key是否存在

返回 1 存在

redis.set(‘name’, ‘value’)

给数据库中key为name的string赋予值value

返回 True 成功

redis.get(‘name’)

返回数据库中key为name的string的value

返回 name 的值

redis.type(‘XY_KEY_Name’)

判断key类型

返回类型

redis.rename(‘name1’, ‘name2’)

将name1重命名为name2

返回 True 成功

redis.delete(‘name’)

删除名为name的key

返回 1 成功

redis.flushdb()

删除当前选择数据库中的所有key

返回 True 成功

redis.flushall()

删除所有数据库中所有的key

返回 True 成功

3.3、源码

把上述的常用方法都写到一个python3的源代码中,如下:

def connectRedis(h,pt,pw):
try:
# import redis
# r = redis.Redis(host=h, port=pt, password=pw) # host后的IP是需要连接的ip,本地是127.0.0.1或者localhost

# from redis import StrictRedis
# r = StrictRedis(host=h, port=pt, password=pw)

from redis import StrictRedis, ConnectionPool
# pool = ConnectionPool(host=h, port=pt, password=pw)
url = "redis://:"+pw+"@"+h+":"+str(pt)+"/0"
print(url)
pool = ConnectionPool.from_url(url)
r = StrictRedis(connection_pool=pool)

print("Redis connection successful...")
return r
except:
print("Redis connection refused...")
return "error"

if __name__ and "__main__":
redis = connectRedis('47.105.196.123', 6379, "[email protected]_1347908642")
if redis != "error":
# 获取当前数据库中key的数目
dbSize = redis.dbsize()
print("dbSize:", dbSize)

# 获取所有符合规则的key
list = redis.keys('XY_KEY_20181229083554_*')
print("Rule-compliant size:", len(list))
print("Rule-compliant key:", list)

# 判断一个key是否存在
key = "XY_KEY_20181229083554_L400000093"
isExists = redis.exists(key)
if isExists == 1:
print("Is exists:", key)
else:
print("Non-existent:", key)

# 给数据库中key为name的string赋予值Sha Shi Di
redis.set('XY_KEY_Name', 'Sha Shi Di')

# 返回数据库中key为name的string的value
name = redis.get('XY_KEY_Name')
print("Name:", name)

# 判断key类型
type = redis.type('XY_KEY_Name')
print("Type:", type)

# 将XY_KEY_Name重命名为XY_KEY_NickName
rename_result = redis.rename('XY_KEY_Name', 'XY_KEY_NickName')
print("Rename_result:", rename_result)

# 删除XY_KEY_NickName这个key
delete_result = redis.delete('XY_KEY_NickName')
if delete_result == 1:
print("Delete_result successful")
else:
print("Delete_result refused")

# 删除当前选择数据库中的所有key
# delete_current_db_key_result = redis.flushdb()
# print("Delete_current_db_key_result:", delete_current_db_key_result)

# 删除所有数据库中所有的key
# delete_all_db_key_result = redis.flushall()
# print("Delete_all_db_key_result:", delete_all_db_key_result)

3.4、效果图

非关系型数据库 之 Key-Value数据库 Redis的使用(Python3)_增删改查_09

4、源码分享Github

​https://github.com/ShaShiDiZhuanLan/Demo_SQL_Python​


标签:__,name,Redis,数据库,redis,Value,key,print
From: https://blog.51cto.com/u_15854865/5811180

相关文章

  • uniCloud传统方式调用数据库-基本操作
    1.后台云函数todo/index.js'usestrict';//查询所有constqueryAll=(collection,params)=>{ returncollection.get()}//新增constadd=(collection,data)=>......
  • 数据库视图浅析
    关系型数据库中存在三种关系:基本关系(又叫“基本表”,或“基表”),查询表,视图表。在这儿我们就讲讲视图。视图是一张虚表,它并没有真正地保存数据,而是通过一些操作将多个表的数据......
  • TablePlus for mac/win(原生数据库开发管理应用)
    TablePlus是一款管理开发数据库的原生应用,它可以帮助您轻松编辑数据库中的数据和结构。TablePlus还包含许多安全功能以更好地保护您的数据安全,包括使用本地libssh和TLS来加......
  • ValueError: Attempt to convert a value (1) with an unsupported type xx to a Tens
    如题所述问题,其本质是tensorflow版本不兼容的问题,但是为了一个错误去更新tensorflow版本,往往会消耗较长时间,而且说不定会引起其他地方依赖的问题。关于该问题可以考虑从不......
  • Redis实现分布式锁
    importredisimporttimeS_REDIS=redis.Redis(host='10.127.0.0',port='8088',db=9,password='test',decode_responses=True,retry_o......
  • redis限流和滑动窗口限流
     一、redissetnx实现限流 比如我们需要在10秒内限定20个请求,那么我们在setnx的时候可以设置过期时间为当前时间戳+10s,使用setnx设置20个互不相同的key,当请求的s......
  • Redis系列8:Bitmap实现亿万级数据计算
    Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster集......
  • 安装mysql数据库报 the error code is2503
    解决方法:第一种:运行cmd窗口(管理员身份)输入命令:msiexec/package "安装路径"第二种:在导航条这个位置,右键。选择启动任务管理器     2.操作如下流程就ok了.  ......
  • 3主3从redis集群扩缩容配置案例
    1、环境准备#关闭防火墙systemctlstopfirewalld#查看防火墙状态systemctlstatusfirewalld#拉取redis:6.0.8镜像dockerpullredis:6.0.8  2、新建6个doc......
  • Redis学习十一:Redis持久化
    文章目录​​一、RDB(RedisDataBase)​​​​1.1触发机制​​​​1.2如果恢复rdb文件!​​​​1.3优缺点​​​​二、AOF(AppendOnlyFile)​​​​2.1是什么​​​​2.2appen......