##Python如何使用Redis

Redis是什么?

  • REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
    Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
    Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Redis 简介

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

Redis优势

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

Resdis与其他key-value存储有什么不同。

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。 在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis在Ubuntu下的安装和使用

1
2
3
4
5
6
7
8
9
10
11
12
13
#Ubuntu apt 命令安装Redis

sudo apt update
sudo apt install redis-server

#启动Redis
redis-server

#验证Redis是否启动
redis-cli
#继续输入
ping

Redis配置

-Redis的配置文件位于Redis安装目录下,文件名为 redis.conf

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
26
27
28
29
30
31
#配置线说明
daemonize no #默认不易手术进程方式运行
pidfile /var/run/redis.pid #当redis 以守护进程方式运行时,redis 默认会把pid 写入 /var/run/redis.pid文件中
port 6379
bind 127.0.0.1
timeout 300
loglevel notice #debug,verbose,notice,warning
logfile stdout
databases 16 #设置数据库数量,默认数据库为0 可以使用select命令连接上指定数据库id
save <seconds> <changes>
rdbcompression yes # 存储至本地数据库时是否压缩数据
dbfilename dump.rdb #指定本地数据库文件名 默认为dump.rdb
dir ./ #指定数据库存放目录
slaveof <masterip> <master-port>#设置当本机为slave服务时 设置master服务的ip地址及端口
masterauth <master-password>
requirepass foobared
maxclients 128
maxmemory <bytes>
appendonly no
appendfile appendonly
appendfsnc everysec
vm-enabled no
vm-swap-file /tmp/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
glueoutputbuf yes
hash-max-zipmap-entries 64
activerehashing yes
include /path/to/local.conf

Redis数据类型

String SET key value/GET key

Hash HMSET key value/HMGET key

List lpush key value/lrange key

Set(无序集合) SAdd key member/smembers key

Zset(有序集合) ZAdd key score member/zrangebyscore key

1
del key #删除已存储key值

redis数据类型

Redis命令

1
2
redis-cli #启动本地redisf服务
redis-cli -h host -p port -password #远程连接redis服务

Redis key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DEL key
DUMP key #序列化
EXISTS key #
EXPIRE key seconds #设置过期时间
EXPIRE key timestamp #
PEXPIRE key milliseconds
PEXPIREAT key milliseconds-timestamp
KEYS pattern
MOVE key db
PERSIST key
PTTL key
TTL key
RANDOMKEY
RENAME key newkey
RENAMENX key newkey
SCAN cursor [MATCH pattern] [COUNT count] #迭代数据库中的数据库键
TYPE key #返回key所存储的值的类型

Redis String

Redis Hash

Redis List

Redis Set

Redis ZSet(sorted set)

Redis HyperLogLog

Redis 发布订阅

Redis 事务

Redis 脚本

Redis 连接

Redis 服务器

Redis GEO

Redis Stream

Redis 高级教程

Redis 数据备份与恢复

Redis 安全

Redis 性能测试

Redis 客户端连接

Redis 管道技术

Redis 分区

Java 使用Redis

PHP 使用Redis