`

Redis学习笔记4-脚本、持久化和集群 Redis学习笔记1-基础命令及数据结构: http://blog.guoyb.com/2016/07/21/lear

阅读更多

       

Redis学习笔记4-脚本、持久化和集群


Redis学习笔记1-基础命令及数据结构: http://blog.guoyb.com/2016/07/21/learn-redis-basic-commands/
Redis学习笔记2-事务与过期时间: http://blog.guoyb.com/2016/08/23/learn-redis-adv/
Redis学习笔记3-排序与消息通知: http://blog.guoyb.com/2016/08/24/learn-redis-adv-2/


学习笔记的第四部分记录Redis的脚本功能、持久化和集群。


脚本

在Python中使用redis-py来操作redis数据库。

下面是一个简单的例程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding: utf-8 -*-
import redis

r = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)
r.set('foo', 'bar')
print r.get('foo')

r.hmset('dict', {'name': 'Bob'})
people = r.hgetall('dict')
print people

pipe = r.pipeline()
pipe.set('foo', 'bar')
pipe.get('foo')
result = pipe.execute()
print result

 

一个较为复杂的例子如下,配合web.py使用:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -*-

import web
import time
import redis

r = redis.StrictRedis()

urls = (
    '/', 'visit',
    '/online', 'online'
)

app = web.application(urls, globals())


def time_to_key(current_time):
    return 'active.users:' + time.strftime('%M', time.localtime(current_time))


def keys_in_last_10_minutes():
    now = time.time()
    result = []
    for i in range(10):
        result.append(time_to_key(now - i * 60))
    return result


class visit:
    def GET(self):
        user_id = web.ctx.env['HTTP_USER_AGENT']
        current_key = time_to_key(time.time())
        pipe = r.pipeline()
        pipe.sadd(current_key, user_id)
        pipe.expire(current_key, 10 * 60)
        pipe.execute()

        return 'User:\t' + user_id + '\r\nKey:\t' + current_key


class online:
    def GET(self):
        online_users = r.sunion(keys_in_last_10_minutes())
        result = ''
        for user in online_users:
            result += 'User agent:' + user + '\r\n'
        return result


if __name__ == "__main__":
    app.run()

 

这个例子用redis缓存当前在线用户信息,用户无操作10分钟后切换到下线状态。

持久化

Redis支持两种持久化方式:

  • RDB方式:采用数据快照,进行压缩,通过子进程进行后台持久化。利用写时复制(COW)进行优化,同时支持无硬盘方式(直接发送给网络传输)。
  • AOF方式:记录一系列的Redis命令。支持定时重写AOF,从而去除冗余命令。

集群

  • 支持一主多从的结构,适用于写入少(只从主数据库写入),读取多(可以从多个从数据库同步读取)的读写分离场景。
  • 主从数据库之间会自动同步数据(从主到从)。
  • 数据持久化可以放在从数据库做,从而降低主数据库负载。
  • 引入哨兵机智,监控主从数据库运行情况,实现自动重启,主从切换。多个哨兵之间还可以互相监控。
  • 支持分片,使用redis-trib.rb自动增加节点(可做重新映射,并自动迁移数据)。和mongo不同,redis集群是纯分布式的,并没有一个总控的路由进程mongos。

转载请注明出处: http://blog.guoyb.com/2016/09/09/learn-redis-other/

分享到:
评论

相关推荐

    redis+redis-desktop-manager-0.8.3.3850+笔记

    `NoSql数据库之Redis笔记.docx`很可能是关于Redis的使用和最佳实践的学习笔记,可能涵盖了Redis的数据类型、命令操作、集群搭建等内容。`redis.conf-中文翻译.txt`则提供了`redis.conf`配置文件的中文解释,有助于...

    Redis学习笔记-包括周阳和狂神说

    在本“Redis学习笔记-包括周阳和狂神说”中,我们将深入探讨Redis的核心概念、功能特性以及实际应用。 1. Redis基本概念 - 键值对:Redis的核心数据结构,键是唯一的标识,值可以是多种类型,如字符串、哈希、列表...

    超详细的redis学习笔记

    ### 超详细的Redis学习笔记知识点汇总 #### 1. Redis 的启动与停止 ##### 1.1 直接启动 Redis 服务 - **默认端口启动**:使用 `$ redis-server` 命令,默认监听端口为 `6379`。 - **指定端口启动**:使用 `$ ...

    redis设计与实现学习笔记,转自github:https://github.com/JiangRRRen/Redis-stud

    Redis以其丰富的数据结构(如字符串、哈希、列表、集合、有序集合)和高效的操作命令著称,提供了多种数据操作原子性,确保了数据一致性。 二、Redis的数据类型 1. 字符串(String):基本的数据类型,支持设置、获取...

    Redis 题库 笔记 PDF文件电子版 494道题 2023年 精选 面试 自学 考试

    一级分类:基础知识- Redis 数据类型- Redis 命令- Redis 过期策略- Redis 事务- Redis 持久化- Redis 发布订阅- Redis Lua 脚本- Redis 位图操作- Redis 分布式锁- Redis 主从复制- Redis 集群- Redis Sentinel- ...

    redis学习笔记。

    这只是 Redis 学习的基础,深入使用还需要掌握更多的高级特性和最佳实践,例如集群搭建、主从复制、Lua 脚本、Pipeline 使用等。随着对 Redis 的了解加深,你可以将其应用到更复杂的系统设计中,优化性能和提高系统...

    Redis.zip学习笔记

    1. Redis简介:Redis是一个开源(BSD许可),内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这些数据结构设计巧妙,能高效地处理大量...

    redis基本命令ttention-model-for-network-ids-开发笔记

    Redis是一款高性能的...以上是对Redis基本命令的概述,实际应用中还会涉及到更复杂的操作和策略,如集群搭建、主从复制、Lua脚本等。熟练掌握这些命令,可以有效提升开发效率,并确保 Redis 在项目中的高效稳定运行。

    redis基本命令paper-mas开发笔记

    Redis是一款高性能的键值存储...在实际开发中,了解和熟练掌握这些基本命令和概念,将有助于你高效地利用Redis解决各种问题,提升系统的性能和稳定性。通过不断实践和学习,你还能探索更多Redis的高级特性和应用场景。

    Redis学习笔记.pdf

    简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因 此 redis 被广泛应用于...除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

    狂神redis源码笔记.rar

    2. **持久化**:Redis提供RDB(快照)和AOF( Append Only File)两种持久化方式,确保在服务器重启后能恢复数据。RDB在指定时间间隔生成数据快照,而AOF记录所有写操作日志。 3. **主从复制**:Redis支持主从复制...

    typora:redis笔记

    4. Redis的持久化机制:包括RDB快照和AOF日志,确保在系统崩溃或意外停机后能够恢复数据。 5. Redis事务与Lua脚本:Redis支持简单的事务操作,以及通过Lua脚本实现更复杂的原子操作。 6. Redis的集群与复制:Redis...

    我的Redis学习笔记,加案例实战。-MyRedis.zip

    Redis以其高效的性能、丰富的数据结构和灵活的数据持久化方案而备受开发者青睐。以下是对Redis的一些核心知识点的详细介绍,以及相关的案例实战。 1. **Redis的数据类型** - **字符串(String)**:最基础的类型,...

    Redis学习笔记.zip

    除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数 缓 存中,这样下一次再访问...

    redis笔记+资料

    这份“redis笔记+资料”提供了全面的学习资源,非常适合初学者掌握 Redis 的基础知识和常见用法。 Redis 的主要特点包括: 1. **内存存储**:Redis 将所有数据存储在内存中,读写速度极快,但这也意味着它不适合...

    redis基本命令-2023C-m开发笔记

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,常用于数据缓存、消息队列以及...同时,不断学习和实践Redis的高级特性,如主从复制、集群搭建、lua脚本等,将有助于你在IT开发领域更上一层楼。

    redis相关笔记和配置文件示例

    Redis是一种高性能的键值数据库,常用于数据缓存、消息队列、持久化存储等多种场景。它的优势在于数据结构丰富,支持字符串、哈希、列表、集合、有序集合等多种类型,且操作速度快,数据一致性良好。 **Redis基础...

    redis学习笔记(Markdown版本)(含目录).zip

    在这个"redis学习笔记(Markdown版本)(含目录)"的压缩包中,你将找到一份详细的学习资料,涵盖了Redis的基础知识到高级应用,帮助你深入理解和掌握这个强大的数据存储工具。 一、Redis基础知识 Redis支持的数据...

    redis阅读笔记.zip

    1. 数据结构:Redis中的数据类型非常丰富,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据结构都是基于底层高效的C语言数据结构实现,如SDS(Simple Dynamic String)替代了...

    狂神说RedisB站笔记.rar

    Redis,全称为Remote Dictionary Server,是一个开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合,这使得Redis在处理复杂数据...

Global site tag (gtag.js) - Google Analytics