博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis基础
阅读量:3938 次
发布时间:2019-05-23

本文共 13748 字,大约阅读时间需要 45 分钟。

目录

 


Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

 

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

  • 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的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis与其他key-value存储有什么不同?

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

Redis安装

Windows下的安装

   redis的安装非常的简单,而且Redis并不依赖其他环境和标准库,很容易上手,这可能也是它流行的一个原因。这里为了测试方便,用的都是windows 环境下测试。。

    redis.windows.conf 是redis的配置文件。

     redis-server.exe  服务器端。

       redis-cli  命令行客户端。

     redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。

1.启动服务

    在命令行输入如下命令 :redis-server  redis.windows.conf。

    同时也可以该命令保存为文件 startup.bat,下次就可以直接启动了。

如果提示redis-server 不是内部命令。将该目录加到环境变量里面即可。

2. redis相关配置

    1. port 端口号,例如6379

    2. bind 实例绑定的访问地址127.0.0.1

    3. requirepass 访问的密码

    4. maxheap 记得把这个配置节点打开,否者redis 服务无法启动。例如maxheap 1024000000

    5. timeout:请求超时时间

    6. logfile:log文件位置

    7. databases:开启数据库的数量

    8. dbfilename:数据快照文件名(只是文件名,不包括目录)

 

  3. 连接测试

    在命令行输入如下命令:redis-cli –h 127.0.0.1 –p 6379

    参数分别为host、port,如果设置了密码,则必须要加上-a 123456,123456为登录密码。否则会提示没有权限登录系统。

    如下图所示。

4.主从配置

Redis跟MySQL一样,拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slave又可以拥有多个slave,从而形成强大的多级服务器集群架构。

         
  redis的主从复制是异步进行的,它不会影响master的运行,所以不会降低redis的处理性能。主从架构中,可以考虑关闭Master的数据持久化功能,只让Slave进行持久化,这样可以提高主服务器的处理性能。同时Slave为只读模式,这样可以避免Slave缓存的数据被误修改。

    实际生产中,主从架构是在几个不同服务器上安装相应的Redis服务。为了测试方便,我这边的主从备份的配置,都是在我Windows 本机上测试。

1. 安装两个Redis 实例,Master和Slave。将Master端口设置为6379,Slave 端口设置为6380 。bind 都设置为:127.0.0.1。

2. 在Slave 实例 ,增加:slaveof 127.0.0.1 6380 配置。

配置完成之后,启动这两个实例,如果输出如下内容,说明主从复制的架构已经配置成功了。

注意:在同一台电脑上测试,Master和Slave的端口不要一样,否则是不能同时启动两个实例的。

3.在命令行,分别连接上Master服务器和Slave 服务器。然后在Master 写入缓存,然后在Slave 中读取。如下图所示:

注意:slave只能读取,不能写入数据。

5、编辑配置

你可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。

语法

CONFIG SET 命令基本语法:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

实例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"OKredis 127.0.0.1:6379> CONFIG GET loglevel1) "loglevel"2) "notice"

参数说明

一般配置项:

  • 绑定ip:如果需要远程访问,可将此行注释,或绑定一个真实ip
bind 127.0.0.1
  • 端口,默认为6379
port 6379
  • 是否以守护进程运行
    • 如果以守护进程运行,则不会在命令行阻塞,类似于服务
    • 如果以非守护进程运行,则当前终端被阻塞
    • 设置为yes表示守护进程,设置为no表示非守护进程
    • 推荐设置为yes
daemonize yes
  • 数据文件
dbfilename dump.rdb
  • 数据文件存储路径
dir /var/lib/redis
  • 日志文件
logfile /var/log/redis/redis-server.log
  • 数据库,默认有16个
database 16

redis.conf 配置项说明如下:

1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

    daemonize no

2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字

    port 6379

4. 绑定的主机地址

    bind 127.0.0.1

5.当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

    timeout 300

6. 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

    loglevel verbose

7. 日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

    logfile stdout

8. 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id

    databases 16

9. 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

    save <seconds> <changes>

    Redis默认配置文件中提供了三个条件:

    save 900 1

    save 300 10

    save 60 10000

    分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

 

10. 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

    rdbcompression yes

11. 指定本地数据库文件名,默认值为dump.rdb

    dbfilename dump.rdb

12. 指定本地数据库存放目录

    dir ./

13. 设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

    slaveof <masterip> <masterport>

14. 当master服务设置了密码保护时,slav服务连接master的密码

    masterauth <master-password>

15. 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH <password>命令提供密码,默认关闭

    requirepass foobared

16. 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

    maxclients 128

17. 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

    maxmemory <bytes>

18. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

    appendonly no

19. 指定更新日志文件名,默认为appendonly.aof

     appendfilename appendonly.aof

20. 指定更新日志条件,共有3个可选值: 

    no:表示等操作系统进行数据缓存同步到磁盘(快) 
    always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) 
    everysec:表示每秒同步一次(折衷,默认值)

    appendfsync everysec

 

21. 指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)

     vm-enabled no

22. 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享

     vm-swap-file /tmp/redis.swap

23. 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0

     vm-max-memory 0

24. Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使用更大的page,如果不 确定,就使用默认值

     vm-page-size 32

25. 设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。

     vm-pages 134217728

26. 设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4

     vm-max-threads 4

27. 设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启

    glueoutputbuf yes

28. 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

    hash-max-zipmap-entries 64

    hash-max-zipmap-value 512

29. 指定是否激活重置哈希,默认为开启(后面在介绍Redis的哈希算法时具体介绍)

    activerehashing yes

30. 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

    include /path/to/local.conf

Ubuntu 下安装

 在 Ubuntu 系统安装 Redi 可以使用以下命令:

$sudo apt-get update$sudo apt-get install redis-server

启动 Redis

$redis-server

查看 redis 是否启动?

$redis-cli

以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> pingPONG

以上说明我们已经成功安装了redis。

Linux下安装

  • 下载:打开,推荐下载稳定版本(stable)
  • 当前ubuntu虚拟机中已经安装好了redis,以下步骤可以跳过
  • step1:解压
tar zxvf redis-3.2.5.tar.gz
  • step2:复制,放到usr/local目录下
sudo mv -r redis-3.2.5/* /usr/local/redis/
  • step3:进入redis目录
cd /usr/local/redis/
  • step4:生成
sudo make
  • step5:测试,这段运行时间会较长
sudo make test
  • step6:安装,将redis的命令安装到/usr/bin/目录
sudo make install
  • step7:配置文件,移动到/etc/目录下
  • 配置文件目录为/usr/local/redis/redis.conf
sudo cp /usr/local/redis/redis.conf /etc/redis/

配置

  • 绑定ip:如果需要远程访问,可将此行注释,或绑定一个真实ip
bind 127.0.0.1
  • 端口,默认为6379
port 6379
  • 是否以守护进程运行
    • 如果以守护进程运行,则不会在命令行阻塞,类似于服务
    • 如果以非守护进程运行,则当前终端被阻塞
    • 设置为yes表示守护进程,设置为no表示非守护进程
    • 推荐设置为yes
daemonize yes
  • 数据文件
dbfilename dump.rdb
  • 数据文件存储路径
dir /var/lib/redis
  • 日志文件
logfile /var/log/redis/redis-server.log
  • 数据库,默认有16个
database 16

服务器端

  • 服务器端的命令为redis-server
  • 可以使用help查看帮助文档
redis-server --help
  • 推荐使用服务的方式管理redis服务
  • 启动
sudo service redis start
  • 停止
sudo service redis stop
  • 重启
sudo service redis restart

客户端

  • 客户端的命令为redis-cli
  • 可以使用help查看帮助文档
redis-cli --help
  • 运行测试命令
ping
  • 切换数据库
  • 数据库没有名称,默认有16个,通过0-15来标识
select 1

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

D:\redis-2.8.17>redis-cli.exe -h 127.0.0.1 -p 6379127.0.0.1:6379> SET name "github.com"OK127.0.0.1:6379> GET name"github.com"127.0.0.1:6379>

在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为github.com。

注意:一个键最大能存储512MB。

增加、修改

  • 设置键值及过期时间,以秒为单位
setex key seconds value
  • 例2:设置键为'py2'值为'hr'过期时间为3秒的数据
setex 'py2' 3 'hr'
  • 设置多个键值
mset key1 value1 key2 value2 ...
  • 例3:设置键为'py3'值为'dx'、键为'py4'值为'xd'、键为'py5'值为'nd'、键为'py6'值为'bg'的数据
mset 'py3' 'dx' 'py4' 'xd' 'py5' 'nd' 'py6' 'bg'
  • 追加值
append key value
  • 例4:向键为py1中追加值' haha'
append 'py1' ' haha'

获取

  • 获取:根据键获取值,如果不存在此键则返回nil
get key
  • 例5:获取键'py1'的值
get 'py1'
  • 根据多个键获取多个值
mget key1 key2 ...
  • 例6:获取键'py3'、'py4'、'py5'、'py6'的值
mget 'py3' 'py4' 'py5' 'py6'

 

键命令

  • 查找键,参数支持正则表达式
keys pattern
  • 例1:查看所有键
keys *
  • 例2:查看名称中包含a的键
keys '*a*'
  • 判断键是否存在,如果存在返回1,不存在返回0
exists key1
  • 例3:判断键'py1'、'py2'是否存在
exists 'py1'exists 'py2'
  • 查看键对应的value的类型
type key
  • 例4:查看键'py1'的值类型,为redis支持的五种类型中的一种
type 'py1'

删除

  • 删除键及对应的值
del key1 key2 ...
  • 例5:删除键'py3'、'py4'、'py5'、'py6'
del 'py3' 'py4' 'py5' 'py6'
  • 设置过期时间,以秒为单位
  • 如果没有指定过期时间则一直存在,直到使用DEL移除
expire key seconds
  • 例6:设置键'py1'的过期时间为10秒
expire 'py1' 10
  • 查看有效时间,以秒为单位
ttl key
  • 例7:查看键'py2'的有效时间
ttl 'py2'

 

Hash(哈希)

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

  • hash用于存储对象,对象的结构为属性、值
  • 值的类型为string

增加、修改

  • 设置单个属性
hset key field value
  • 例1:设置键'py2'的属性'name'为'hr'
hset 'py2' 'name' 'hr'
  • 设置多个属性
hmset key field1 value1 field2 value2 ...
  • 例2:设置键'py3'的属性'name'为'dx'、属性'gender'为'1'、属性'birthday'为'2017-1-1'
hmset 'py3' 'name' 'dx' 'gender' '1' 'birthday' '2017-1-1'

获取

  • 获取指定键所有的属性
hkeys key
  • 例3:获取键'py3'的所有属性
hkeys 'py3'
  • 获取一个属性的值
hget key field
  • 例4:获取键'py2'属性'name'的值
hget 'py2' 'name'
  • 获取多个属性的值
hmget key field1 field2 ...
  • 例5:获取键'py3'属性'name'、'gender'、'birthday'的值
hmget 'py3' 'name' 'gender' 'birthday'
  • 获取所有属性的值
hvals key
  • 例6:获取键'py3'所有属性的值
hvals 'py3'

删除

  • 删除整个hash键及值,使用del命令
  • 删除属性,属性对应的值会被一起删除
hdel key field1 field2 ...
  • 例7:获取键'py3'的属性'gender'、'birthday'
hdel 'py3' 'gender' 'birthday'

list

  • 列表的元素类型为string
  • 按照插入顺序排序

增加

  • 在左侧插入数据
lpush key value1 value2 ...
  • 例1:从键为'py11'的列表左侧加入数据'dx'、'xd'
lpush 'py11' 'dx' 'xd'
  • 在右侧插入数据
rpush key value1 value2 ...
  • 例2:从键为'py11'的列表右侧加入数据'nd'、'bg'
rpush 'py11' 'nd' 'bg'
  • 在指定元素的前或后插入新元素
linsert key before或after 现有元素 新元素
  • 例3:在键为'py11'的列表中元素'nd'前加入'zbt'
linsert 'py11' before 'nd' 'zbt'

获取

  • 返回列表里指定范围内的元素
    • start、stop为元素的下标索引
    • 索引从左侧开始,第一个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
lrange key start stop
  • 例4:获取键为'py11'的列表所有元素
lrange 'py11' 0 -1

修改

  • 设置指定索引位置的元素值
    • 索引从左侧开始,第一个元素为0
    • 索引可以是负数,表示尾部开始计数,如-1表示最后一个元素
lset key index value
  • 例5:修改键为'py11'的列表中下标为1的元素值为'xidu'
lset 'py11' 1 'xidu'

删除

  • 删除指定元素
    • 将列表中前count次出现的值为value的元素移除
    • count > 0: 从头往尾移除
    • count < 0: 从尾往头移除
    • count = 0: 移除所有
lrem key count value
  • 例6.1:向列表'py12'中加入元素'h0'、'h1'、'h2'、'h0'、'h1'、'h3'、'h0'、'h1'
rpush 'py12' 'h0' 'h1' 'h2' 'h0' 'h1' 'h3' 'h0' 'h1'
  • 例6.2:从'py12'列表右侧开始删除2个'h0'
lrem 'py12' -2 'h0'
  • 例6.2:查看列表'py12'的所有元素
lrange 'py12' 0 -1

set(无序集合

  • 无序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
  • 说明:对于集合没有修改操作

增加

  • 添加元素
sadd key member1 member2 ...
  • 例1:向键'py21'的集合中添加元素'yg'、'xln'、'yzp'
sadd 'py21' 'yg' 'xln' 'yzp'

获取

  • 返回所有的元素
smembers key
  • 例2:获取键'py21'的集合中所有元素
smembers 'py21'

删除

  • 删除指定元素
srem key member
  • 例3:删除键'py21'的集合中元素'yzp'
srem 'py21' 'yzp'

zset(有序集合)

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
  • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 说明:没有修改操作

增加

  • 添加
zadd key score1 member1 score2 member2 ...
  • 例1:向键'py31'的集合中添加元素'gj'、'hr'、'yg'、'xln',权限分别为1、5、8、3
zadd 'py31' 1 'gj' 5 'hr' 8 'yg' 3 'xln'

获取

  • 返回指定范围内的元素
    • start、stop为元素的下标索引
    • 索引从左侧开始,第一个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
zrange key start stop
  • 例2:获取键'py31'的集合中所有元素
zrange 'py31' 0 -1
  • 返回score值在min和max之间的成员
zrangebyscore key min max
  • 例3:获取键'py31'的集合中权限值在4和9之间的成员
zrangebyscore 'py31' 4 9
  • 返回成员member的score值
zscore key member
  • 例4:获取键'py31'的集合中元素'yg'的权重
zscore 'py31' 'yg'

删除

  • 删除指定元素
zrem key member1 member2 ...
  • 例5:删除集合'py31'中元素'yg'
zrem 'py31' 'yg'
  • 删除权重在指定范围的元素
zremrangebyscore key min max
  • 例6:删除集合'py31'中权限在4、9之间的元素
zremrangebyscore 'py31' 4 9

 

与python交互

安装包

  • 进入虚拟环境py2_db,联网安装包redis
pip install redis
  • 到下载redis包的源码,使用源码安装
unzip redis-py-master.zipcd redis-py-masterpython setup.py install

调用模块

  • 引入模块
from redis import *
  • 这个模块中提供了StrictRedis对象,用于连接redis服务器,并按照不同类型提供了不同方法,进行交互操作

StrictRedis对象方法

  • 通过init创建对象,指定参数host、port与指定的服务器和端口连接,host默认为localhost,port默认为6379
  • 根据不同的类型,拥有不同的实例方法可以调用,与前面学的redis命令对应,方法需要的参数与命令的参数一致

string

  • set
  • setex
  • mset
  • append
  • get
  • mget

key

  • keys
  • exists
  • type
  • delete
  • expire
  • getrange
  • ttl

hash

  • hset
  • hmset
  • hkeys
  • hget
  • hmget
  • hvals
  • hdel

list

  • lpush
  • rpush
  • linsert
  • lrange
  • lset
  • lrem

set

  • sadd
  • smembers
  • srem

zset

  • zadd
  • zrange
  • zrangebyscore
  • zscore
  • zrem
  • zremrangebyscore

string-增加

  • 方法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False
  • 创建文件redis_add.py,编写代码如下
#coding=utf-8from redis import *if __name__=="__main__":    try:        #创建StrictRedis对象,与redis服务器建立连接        sr=StrictRedis()        #添加键py1,值为gj        result=sr.set('py1','gj')        #输出响应结果,如果添加成功则返回True,否则返回False        print result    except Exception as e:        print e

 

 

string-获取

  • 方法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None
  • 创建文件redis_get.py,编写代码如下
#coding=utf-8from redis import *if __name__=="__main__":    try:        #创建StrictRedis对象,与redis服务器建立连接        sr=StrictRedis()        #获取键py1的值        result = sr.get('py1')        #输出键的值,如果键不存在则返回None        print result    except Exception as e:        print e

string-修改

  • 方法set,如果键已经存在则进行修改,如果键不存在则进行添加
  • 创建文件redis_set.py,编写代码如下
#coding=utf-8from redis import *if __name__=="__main__":    try:        #创建StrictRedis对象,与redis服务器建立连接        sr=StrictRedis()        #设置键py1的值,如果键已经存在则进行修改,如果键不存在则进行添加        result = sr.set('py1','hr')        #输出响应结果,如果操作成功则返回True,否则返回False        print result    except Exception as e:        print e

 

string-删除

  • 方法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返回0
  • 创建文件redis_delete.py,编写代码如下
#coding=utf-8from redis import *if __name__=="__main__":    try:        #创建StrictRedis对象,与redis服务器建立连接        sr=StrictRedis()        #设置键py1的值,如果键已经存在则进行修改,如果键不存在则进行添加        result = sr.delete('py1')        #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0        print result    except Exception as e:        print e

获取键

  • 方法keys,根据正则表达式获取键
  • 创建文件redis_keys.py,编写代码如下
#coding=utf-8from redis import *if __name__=="__main__":    try:        #创建StrictRedis对象,与redis服务器建立连接        sr=StrictRedis()        #获取所有的键        result=sr.keys()        #输出响应结果,所有的键构成一个列表,如果没有键则返回空列表        print result    except Exception as e:        print e

主从配置

  • 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
  • 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
  • 说明:ip可以换为自己机器与同桌机器的地址
  • 设置主服务器的配置
bind 192.168.1.10
  • 设置从服务器的配置
  • 注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11slaveof 192.168.1.10 6379
  • 在master和slave分别执行info命令,查看输出信息
  • 在master上写数据
set hello world
  • 在slave上读数据
get hello

 

 

 

转载地址:http://zezwi.baihongyu.com/

你可能感兴趣的文章
推荐阅读书籍
查看>>
外包管理
查看>>
项目管理师职业道德规范
查看>>
战略管理概述
查看>>
业务流程管理和重组
查看>>
知识管理
查看>>
项目整体绩效评估
查看>>
信息安全系统和安全体系
查看>>
信息系统安全风险识别与评估
查看>>
信息安全系统的组织管理
查看>>
项目时间管理脉络
查看>>
项目成本管理脉络
查看>>
项目质量管理脉络
查看>>
项目人力资源管理脉络
查看>>
项目沟通管理脉络
查看>>
项目风险管理脉络
查看>>
项目采购管理脉络
查看>>
项目管理总结
查看>>
java内存区域的分布
查看>>
Java跨平台的构思分析
查看>>