python下的redis数据库

1.什么是Redis?

REmote DIctionary Server(Redis) 是一个key-value存储系统。使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦
可持久化的日志型、Key-Value数据库,并提供多种语言的API(python, php, java…)。

它通常被称为数据结构服务器,因为值(value)
可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

dict = {‘name’:“fentiao”, “age”:100, “scores”: [100, 90, 100]}

2.Redis的优势?

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,
    通过MULTI和EXEC指令包起来。
  • Redis支持数据的备份,即master-slave模式的数据备份。
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

3.redis的安装

下载地址:http://redis.io/download,下载最新稳定版本。

tar xzf redis-5.0.3.tar.gz

启动:
make完后 redis-5.0.3目录下会出现编译后的redis服务程序redis-server,
还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

./redis-server

也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

./redis-server ../redis.conf

注意:

vim /etc/services # 记录服务对应的端口号
常见的端口号:
http: 80
ssh: 22
mysql: 3306
redis: 6379
在使用python连接数据库时 需要启用redis的服务端
在这里插入图片描述

如何用python连接redis

import time

import redis

#*******************************第一种方式 ***********************************
#redis.Redis(host='localhost', port=6379)
conn = redis.Redis()
#
conn.set('name', 'fentiao', 3)
print(conn.get('name'))

print("等待3秒........")
time.sleep(3)
print(conn.get('name'))



******************************第二种方式 *********************
#为了减少每次建立连接, 释放连接的开销, 推荐使用连接池。
#多个redis对象可以共用一个连接池。

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)
conn.set('name', 'fentiao', 3)  # 4代表的是失效时间, 单位为秒
#默认返回bytes类型, 如果转换, 需要解码为utf-8编码格式
print(conn.get('name').decode('utf-8'))
print("等待3秒........")
time.sleep(3)
print(conn.get('name'))

redis的常用操作

用连接池连接作用
如果没有连接池,每一次的存取都需要新建一个连接,使用完后再断开,如果是频繁访问的场景,那也太不划算了。有了连接池,就相当于有了一个“大池子”,池子里的连接都是通着的。你如果想连接,自己去池子里找,自助连接。
这就类似于:你要啥,售货员会给你拿啥的小卖部和自助购物的超市的区别。

import redis


pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('name', 'fentiao', 3)
conn.set('age', 10 , 3)
conn.set('scores', 100 , 3)
print(conn.get('name'))
print(conn['name'])


#获取所有的key值
print(conn.keys())
print(len(conn.keys()))


#当前redis数据库中数据条数;
print(conn.dbsize())
#删除指定key-value值
conn.delete('scores')
print("正在删除key......")
print(conn.get('scores'))

 #将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
conn.save()  
print("清除前:", conn.keys())

#清楚redis里面所有的key-value值
conn.flushall()

print("清除后:", conn.keys())

redis的应用场景-页面点击数

页面点击数加一

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

conn.set('views', 19800)
conn.incr('views')
print(conn.get('views'))

在这里插入图片描述

应用场景-社交圈子

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

#选择集合存储
conn.sadd('python', 'user1')
conn.sadd('python', 'user2')
conn.sadd('python', 'user3')

conn.sadd('movie', 'user1')
conn.sadd('movie', 'user6')
conn.sadd('movie', 'user7')

#获取某个圈子的成员
print(conn.smembers('python'))
print(conn.smembers('movie'))

#获取两个圈子共同拥有的成员
print(conn.sinter('python', 'movie'))

#获取并集
print(conn.sunion('python','movie'))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37206112/article/details/86518030