栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Redis 学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis 学习

Redis 介绍

Redis是一个key-value存储系统(数据库)。redis支持存储的value类型有很多种,如string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。

安装redis库

因为我是用ubuntu安装学习的
ubuntu 安装redis

python连接redis

python连接redis分两种情况(一种是有密码,一种是无密码
因为redis安装的时候,默认是无密码的

1. 有密码:
import redis
r = redis.Redis(host="192.168.xx.xx", port=6379,password="xxxx")

密码是:123456,host是redis对应的主机ip,port是端口6379(redis默认端口)

2.无密码:
import redis
r = redis.Redis(host='192.168.xx.xx', port=6379)

上面的连接方式属于普通连接(相对于连接池来说),此外还有连接池(connection pool)的连接方式,可以管理所有的连接,避免每次建立、释放连接带来的开销。

3. 连接池:
import redis
pool = redis.ConnectionPool(host='192.168.xx.xx', port=6379)
r = redis.Redis(connection_pool=pool)
4. 实例:
import redis
r = redis.Redis(host='192.168.31.196', port=6379)
r.set('xiao', '隔壁小红馆1')   #添加
r.set('hong', '隔壁小红馆2')   #添加
print(r.get('xiao'))   #获取
print(r.get('hong'))   #获取

为了解决中文乱码问题,在连接Redis的时候,加入utf-8的编码格式

import redis
r = redis.Redis(host='192.168.31.196', port=6379,decode_responses=True, charset='UTF-8', encoding='UTF-8')
r.set('xiao', '隔壁小红馆1')   #添加
r.set('hong', '隔壁小红馆2')   #添加
print(r.get('xiao'))   #获取
print(r.get('hong'))   #获取


在通过Python代码连接redis,并设置了两个key-value(xiao:隔壁小红馆1 和 hong:我是小红啊)


在Ubuntu里面乱码时, 退出环境,重新进入:

redis-cli --raw

传动带

这样就可以正常显示中文了

Redis存储结构是key-value,不同的是value类型的不同

string操作 1. set

在Redis中设置值,默认不存在就创建,存在就修改

语法

SET KEY_NAME VALUE

返回值

在 Redis 2.6.12 以前版本, SET 命令总是返回 OK 。

从 Redis 2.6.12 版本开始, SET 在设置操作成功完成时,才返回 OK 。

r.set('xiao', '隔壁小红馆1')   #添加

此外set设置的时候还可以加入过期时间(类似cookie有效期这样),一旦过期之后,再通过key去取value时,value的结果为None。

  • 设置过期时间
#设置过期时间(秒),这里是5秒过期

r.setex('key1',5,'value1')
#设置过期时间(毫秒),这里是1000耗秒过期
r.psetex("key2",1000,"value2")
2.get

用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误

语法:

GET KEY_NAME

返回值

返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。

print(r.get('xiao'))

3.mset

set是设置单个key-value,mset可以批量设置多个key-value

语法

MSET key1 value1 key2 value2 … keyN valueN

返回值

总是返回 OK

# 批量设置值
r.mset({'k3':'v3', 'k4':'v4'})
print(r.get('k3'))
print(r.get('k4'))

4.mget

get可以取出单个value,mget可以批量取出多个value

语法

MGET KEY1 KEY2 … KEYN

返回值

一个包含所有给定 key 的值的列表。

# 批量获取-法一
print(r.mget("k3","k4"))
# 批量获取-法二
v_list=["k3","k4"]
print(r.mget(v_list))
5. getrange

用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

语法:

 GETRANGE KEY_NAME start end

返回值

截取得到的子字符串。

 SET xiao "This is my test key"
 GETRANGE xiao 0 3 # "This"
 GETRANGE xiao 0 -1 # "This is my test key"

6.Getset

用于设置指定 key 的值,并返回 key 的旧值。

语法:

GETSET KEY_NAME VALUE

返回值

返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

GETSET db mongodb  	# (nil)(没有旧值,返回 nil)
GET db  				# "mongodb"
GETSET db redis      # "mongodb" (返回旧值 mongodb)
GET db				# "redis"

7. Setex

指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

语法:

SETEX KEY_NAME TIMEOUT VALUE

返回值

设置成功时返回 OK 。

SETEX mykey 60 redis  # OK
TTL mykey  				#60
GET mykey 				# "redis"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号