当前位置:首页>python>Python 自动化操作Redis的15个实用脚本

Python 自动化操作Redis的15个实用脚本

  • 2026-01-31 22:20:19
Python 自动化操作Redis的15个实用脚本

Redis作为高性能的键值数据库,在现代应用开发中扮演着重要角色。Python通过redis-py库提供了丰富的Redis操作接口,能够帮助开发者高效地实现数据缓存、会话管理、消息队列等多种功能。本文将介绍15个实用的自动化脚本,涵盖数据操作、性能优化和高级功能等多个典型场景。

环境准备

首先确保已安装redis-py库:

pip install redis

所有示例默认连接本地Redis服务器(localhost:6379,数据库0),实际使用时请根据生产环境调整连接参数。

1. 基础键值操作

场景:简单的数据存储与检索

import redisdef basic_key_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    # 设置带过期时间的键值    r.setex('session:user123', 3600, 'active')    # 获取值    status = r.get('session:user123')    print(f"Session status: {status.decode() if status else 'Not found'}")    # 检查键是否存在    exists = r.exists('session:user123')    print(f"Key exists: {exists}")if __name__ == "__main__":    basic_key_operations()

2. 批量操作键值

场景:高效处理大量数据

def batch_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    # 批量设置多个键值    data = {        'user:1:name': 'Alice',        'user:1:email': 'alice@example.com',        'user:1:age': '25'    }    r.mset(data)    # 批量获取多个键值    keys = ['user:1:name', 'user:1:email', 'user:1:age']    values = r.mget(keys)    for key, value in zip(keys, values):        print(f"{key}: {value.decode() if value else 'None'}")

3. 哈希表高级操作

场景:存储结构化对象

def advanced_hash_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    user_id = "user:1001"    # 设置多个字段    user_data = {        'name': 'Bob Smith',        'email': 'bob@example.com',        'score': '95',        'last_login': '2025-12-25'    }    r.hset(user_id, mapping=user_data)    # 获取所有字段    all_fields = r.hgetall(user_id)    print("User data:")    for field, value in all_fields.items():        print(f"  {field.decode()}: {value.decode()}")    # 增加数值字段    r.hincrby(user_id, 'score', 5)    new_score = r.hget(user_id, 'score')    print(f"Updated score: {new_score.decode()}")

4. 列表队列操作

场景:实现任务队列

def queue_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    queue_key = 'task_queue'    # 生产者:添加任务到队列    tasks = ['process_data', 'send_email', 'generate_report', 'cleanup']    for task in tasks:        r.lpush(queue_key, task)        print(f"Added task: {task}")    # 消费者:处理任务    while True:        task = r.brpop(queue_key, timeout=1)        if task:            task_name = task[1].decode()            print(f"Processing task: {task_name}")            # 模拟任务处理            import time            time.sleep(0.5)            print(f"Completed: {task_name}")        else:            print("No more tasks in queue")            break

5. 集合运算

场景:用户标签系统

def set_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    # 用户标签集合    r.sadd('user:101:tags', 'python', 'redis', 'backend')    r.sadd('user:102:tags', 'python', 'frontend', 'javascript')    r.sadd('user:103:tags', 'redis', 'database', 'backend')    # 查找共同标签    common_tags = r.sinter('user:101:tags', 'user:103:tags')    print("Common tags between user 101 and 103:")    for tag in common_tags:        print(f"  - {tag.decode()}")    # 合并所有标签    all_tags = r.sunion('user:101:tags', 'user:102:tags', 'user:103:tags')    print("\nAll unique tags:")    for tag in sorted(all_tags):        print(f"  - {tag.decode()}")

6. 有序集合排行榜

场景:游戏得分排行榜

def leaderboard_system():    r = redis.Redis(host='localhost', port=6379, db=0)    leaderboard_key = 'game:leaderboard'    # 添加玩家得分    players = {        'player1': 1500,        'player2': 2200,        'player3': 1800,        'player4': 2500,        'player5': 1900    }    r.zadd(leaderboard_key, players)    # 获取前3名    top_players = r.zrevrange(leaderboard_key, 0, 2, withscores=True)    print("Top 3 Players:")    for rank, (player, score) in enumerate(top_players, 1):        print(f"{rank}. {player.decode()}: {int(score)} points")    # 获取玩家排名    player_rank = r.zrevrank(leaderboard_key, 'player3')    player_score = r.zscore(leaderboard_key, 'player3')    print(f"\nPlayer3 rank: {player_rank + 1 if player_rank is not None else 'N/A'}")    print(f"Player3 score: {player_score}")

7. 发布订阅模式

场景:实时通知系统

import threadingimport timedef pubsub_system():    r = redis.Redis(host='localhost', port=6379, db=0)    def subscriber(channel_name):        pubsub = r.pubsub()        pubsub.subscribe(channel_name)        print(f"Subscriber started on channel: {channel_name}")        for message in pubsub.listen():            if message['type'] == 'message':                data = message['data'].decode()                print(f"Received: {data}")                if data == 'exit':                    break    # 启动订阅者线程    channel = 'notifications'    sub_thread = threading.Thread(target=subscriber, args=(channel,))    sub_thread.daemon = True    sub_thread.start()    time.sleep(1)  # 等待订阅者准备    # 发布消息    messages = [        "System started",        "User logged in",        "Data updated",        "exit"    ]    for msg in messages:        r.publish(channel, msg)        time.sleep(0.5)    sub_thread.join(timeout=2)

8. 管道批量操作

场景:减少网络延迟

def pipeline_performance():    r = redis.Redis(host='localhost', port=6379, db=0)    # 不使用管道    start = time.time()    for i in range(100):        r.set(f'temp:{i}', f'value:{i}')    without_pipeline = time.time() - start    # 清理数据    for i in range(100):        r.delete(f'temp:{i}')    # 使用管道    start = time.time()    pipe = r.pipeline()    for i in range(100):        pipe.set(f'temp:{i}', f'value:{i}')    pipe.execute()    with_pipeline = time.time() - start    print(f"Without pipeline: {without_pipeline:.3f} seconds")    print(f"With pipeline: {with_pipeline:.3f} seconds")    print(f"Performance improvement: {without_pipeline/with_pipeline:.1f}x")

9. 事务保证原子性

场景:账户余额转账

def transaction_example():    r = redis.Redis(host='localhost', port=6379, db=0)    # 初始化账户余额    r.set('account:A', '1000')    r.set('account:B', '500')    def transfer_funds(from_account, to_account, amount):        pipe = r.pipeline(transaction=True)        try:            # 监视账户变化            pipe.watch(from_account, to_account)            # 检查余额            from_balance = int(pipe.get(from_account) or 0)            if from_balance < amount:                print("Insufficient funds")                return False            # 开始事务            pipe.multi()            pipe.decrby(from_account, amount)            pipe.incrby(to_account, amount)            pipe.execute()            print(f"Transferred {amount} from {from_account} to {to_account}")            return True        except redis.WatchError:            print("Transaction failed due to concurrent modification")            return False        finally:            pipe.reset()    # 执行转账    transfer_funds('account:A', 'account:B', 200)    # 验证结果    print(f"Account A: {r.get('account:A').decode()}")    print(f"Account B: {r.get('account:B').decode()}")

10. Lua脚本执行

场景:复杂原子操作

def lua_scripting():    r = redis.Redis(host='localhost', port=6379, db=0)    # Lua脚本:原子性地检查并设置值    lua_script = """    local key = KEYS    local value = ARGV    local ttl = ARGV    local current = redis.call('GET', key)    if current then        return {false, current}    else        redis.call('SET', key, value)        redis.call('EXPIRE', key, ttl)        return {true, value}    end    """    # 注册脚本    script = r.register_script(lua_script)    # 执行脚本    key = 'cache:item'    result = script(keys=[key], args=['cached_data', '60'])    if result[0]:        print(f"Cache set successfully: {result[1]}")    else:        print(f"Cache already exists: {result[1]}")

11. 键过期与TTL管理

场景:缓存失效管理

def expiration_management():    r = redis.Redis(host='localhost', port=6379, db=0)    # 设置带过期时间的键    cache_key = 'api:response:user:123'    r.setex(cache_key, 300, '{"name": "John", "status": "active"}')  # 5分钟过期    # 检查剩余时间    ttl = r.ttl(cache_key)    print(f"Cache will expire in {ttl} seconds")    # 更新过期时间    if ttl < 60:  # 如果剩余时间小于1分钟        r.expire(cache_key, 600)  # 延长到10分钟        print("Cache expiration extended to 10 minutes")    # 设置永久键    r.set('config:site_name', 'MyApp')    r.persist('config:site_name')  # 移除过期时间

12. 扫描大键集合

场景:安全遍历大量键

def scan_keys():    r = redis.Redis(host='localhost', port=6379, db=0)    # 使用SCAN代替KEYS(避免阻塞)    pattern = 'user:*'    cursor = '0'    user_keys = []    while cursor != 0:        cursor, keys = r.scan(cursor=cursor, match=pattern, count=100)        user_keys.extend(keys)    print(f"Found {len(user_keys)} user keys")    # 批量获取用户信息    for i in range(0, len(user_keys), 10):        batch = user_keys[i:i+10]        values = r.mget(batch)        for key, value in zip(batch, values):            if value:                print(f"{key.decode()}: {value.decode()[:50]}...")

13. 位图操作

场景:用户在线状态追踪

def bitmap_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    # 记录用户每日登录状态    bitmap_key = 'online:2025-12-25'    # 用户ID 1001-1010在25日登录    for user_id in range(1001, 1011):        r.setbit(bitmap_key, user_id, 1)    # 检查特定用户是否登录    user_1005_status = r.getbit(bitmap_key, 1005)    print(f"User 1005 online: {'Yes' if user_1005_status else 'No'}")    # 统计在线用户数    online_count = r.bitcount(bitmap_key)    print(f"Total online users: {online_count}")    # 查找第一个在线的用户    first_online = r.bitpos(bitmap_key, 1)    print(f"First online user ID: {first_online}")

14. 地理空间索引

场景:附近位置搜索

def geospatial_operations():    r = redis.Redis(host='localhost', port=6379, db=0)    # 添加地理位置    locations_key = 'cities:locations'    cities = {        'Beijing': (116.4074, 39.9042),        'Shanghai': (121.4737, 31.2304),        'Guangzhou': (113.2644, 23.1291),        'Shenzhen': (114.0579, 22.5431)    }    r.geoadd(locations_key, cities)    # 查找附近的城市    center = (116.4074, 39.9042)  # 北京坐标    nearby = r.georadius(        locations_key,        center[0],        center[1],        500,  # 500公里半径        unit='km',        withdist=True,        sort='ASC'    )    print("Cities within 500km of Beijing:")    for city, distance in nearby:        print(f"  {city.decode()}: {distance:.1f} km")    # 计算两个城市距离    distance = r.geodist(locations_key, 'Beijing', 'Shanghai', unit='km')    print(f"\nDistance Beijing-Shanghai: {distance} km")

15. 连接池与连接管理

场景:生产环境连接优化

import redisfrom redis.connection import ConnectionPooldef connection_pool_management():    # 创建连接池    pool = ConnectionPool(        host='localhost',        port=6379,        db=0,        max_connections=10,        socket_timeout=5,        retry_on_timeout=True    )    # 使用连接池    r = redis.Redis(connection_pool=pool)    try:        # 测试连接        r.ping()        print("Redis connection successful")        # 性能测试        import time        start = time.time()        for i in range(1000):            r.set(f'test:{i}', f'data:{i}')        elapsed = time.time() - start        print(f"1000 operations completed in {elapsed:.2f} seconds")        print(f"Operations per second: {1000/elapsed:.0f}")    except redis.ConnectionError as e:        print(f"Connection failed: {e}")    finally:        # 清理连接池        pool.disconnect()        print("Connection pool cleaned up")

这些脚本覆盖了Redis主要应用场景,从基础操作到高级功能,可以帮助开发者高效地实现各种数据存储和处理需求。在实际应用中,建议根据具体业务场景选择合适的操作方式,并结合性能监控和优化策略,可以显著提升应用性能和开发效率。

“无他,惟手熟尔”!有需要的用起来!
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐
------加入知识场与更多人一起学习------

https://ima.qq.com/wiki/?shareId=f2628818f0874da17b71ffa0e5e8408114e7dbad46f1745bbd1cc1365277631c

https://ima.qq.com/wiki/?shareId=66042e013e5ccae8371b46359aa45b8714f435cc844ff0903e27a64e050b54b5

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-09 04:08:24 HTTP/2.0 GET : https://f.mffb.com.cn/a/460015.html
  2. 运行时间 : 0.080522s [ 吞吐率:12.42req/s ] 内存消耗:4,687.76kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=357c568890dd7f3201c303f796041e33
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000779s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000898s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000369s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000289s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000666s ]
  6. SELECT * FROM `set` [ RunTime:0.000215s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000682s ]
  8. SELECT * FROM `article` WHERE `id` = 460015 LIMIT 1 [ RunTime:0.000495s ]
  9. UPDATE `article` SET `lasttime` = 1770581304 WHERE `id` = 460015 [ RunTime:0.002322s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000303s ]
  11. SELECT * FROM `article` WHERE `id` < 460015 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000505s ]
  12. SELECT * FROM `article` WHERE `id` > 460015 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002257s ]
  13. SELECT * FROM `article` WHERE `id` < 460015 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000964s ]
  14. SELECT * FROM `article` WHERE `id` < 460015 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000774s ]
  15. SELECT * FROM `article` WHERE `id` < 460015 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000989s ]
0.082324s