Redis 记录

安装 (Windows)https://github.com/microsoftarchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.msi

安装(Linux) 

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

配置环境变量(选)

配置密码 打开Redis.conf 找到requirepass 去掉前面# 解注

启动服务 redis-server redis.windows.conf

启动客户端 redis-cli -h 127.0.0.1 -p 6379 -a password

 

.net nuget ServiceStack.Redis

.net core nuget ServiceStack.Redis.Core

public class RedisHelper
    {
        private static RedisClient _redisClient = new RedisClient("127.0.0.1", 6379, "password");//redis服务IP和端口和密码
        /// <summary>
        /// 移除key
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool RemoveKey(string key)
        {
            return _redisClient.Remove(key);
        }

        /// <summary>
        /// 重新设置key的过期时间
        /// </summary>
        /// <param name="key"></param>
        /// <param name="timeOut">过期时间(秒)</param>
        /// <returns></returns>
        public static bool KeyExpire(string key, int timeOut)
        {
            return _redisClient.Expire(key, timeOut);
        }
        /// <summary>
        /// 设置键和字符串类型的值
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool Set(string key, string value)
        {
            return _redisClient.Set<string>(key, value);
        }
        /// <summary>
        /// 设置键和字符串类型的值
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="timeOut">过期时间(秒)</param>
        /// <returns></returns>
        public static bool Set(string key, string value, int timeOut)
        {
            return _redisClient.Set<string>(key, value, DateTime.Now.AddSeconds(timeOut));
        }

        /// <summary>
        /// 根据key获取value
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string Get(string key)
        {
            return _redisClient.Get<string>(key);
        }

        /// <summary>
        /// 设置键和指定类型数据的值
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="timeOut">过期时间(秒)</param>
        /// <returns></returns>
        public static bool Set<T>(string key, T value, int timeOut)
        {
            return _redisClient.Set<T>(key, value, DateTime.Now.AddSeconds(timeOut));
        }
        /// <summary>
        /// 设置键和指定类型数据的值
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static bool Set<T>(string key, T value)
        {
            return _redisClient.Set<T>(key, value);
        }

        /// <summary>
        /// 根据key获取指定类型数据
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="key"></param>
        /// <returns></returns>
        public static T Get<T>(string key)
        {
            return _redisClient.Get<T>(key);
        }
    }

 

转载于:https://www.cnblogs.com/jianghaidong/p/11400048.html

### 如何使用 Redis 实现日志记录功能 #### 使用 Redis 记录日志的核心概念 Redis 提供了多种数据结构,其中 `list` 数据类型非常适合用于实现日志记录的功能。通过将日志消息存储到 Redis 列表中,可以快速高效地管理大量日志条目[^4]。 #### 日志记录的具体实现方式 以下是基于 Redis 的日志记录实现方案: 1. **利用 Redis List 存储日志** 可以创建一个名为 `log_queue` 的列表作为日志队列,并通过 `LPUSH` 或 `RPUSH` 命令向该列表追加新的日志项。例如: ```python import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) log_message = "Error occurred at 2023-10-01T12:00:00" r.rpush('log_queue', log_message) ``` 2. **设置日志长度限制** 为了避免日志占用过多内存,可以通过 `LTRIM` 命令限制日志队列的最大长度。例如,保留最近的 100 条日志记录: ```python r.ltrim('log_queue', -100, -1) ``` 3. **读取日志** 当需要查看日志时,可以从 Redis 中获取整个日志队列的内容。例如,使用 `LRANGE` 获取所有日志项: ```python logs = r.lrange('log_queue', 0, -1) for log in logs: print(log.decode('utf-8')) ``` 4. **结合慢查询日志机制优化性能监控** 如果希望进一步增强日志系统的功能性,还可以集成 Redis 自带的慢查询日志功能。这有助于捕获执行时间过长的命令并将其写入日志文件[^1]。 5. **配合其他工具完成持久化** 虽然 Redis 支持临时存储日志,但如果需要长期保存这些日志,则应考虑与其他日志管理系统(如 ELK Stack)相结合。此外,也可以通过配置 XML 文件定义日志归档策略[^3]。 #### 示例代码展示 下面是一个完整的 Python 示例程序,演示如何用 Redis 进行简单的日志记录操作: ```python import redis def add_log(redis_client, message): """ 将日志消息推送到 Redis list """ redis_client.rpush('log_queue', message) def trim_logs(redis_client, max_length=100): """ 截断日志队列至指定大小 """ redis_client.ltrim('log_queue', -max_length, -1) def fetch_logs(redis_client): """ 获取当前所有的日志记录 """ return [msg.decode('utf-8') for msg in redis_client.lrange('log_queue', 0, -1)] if __name__ == "__main__": client = redis.StrictRedis(host='localhost', port=6379, decode_responses=True) # 添加几条测试日志 add_log(client, 'Info: System started') add_log(client, 'Warning: Disk space low') add_log(client, 'Error: Failed to connect database') # 控制日志数量不超过 50 条 trim_logs(client, max_length=50) # 打印现有日志 all_logs = fetch_logs(client) for idx, log in enumerate(all_logs, start=1): print(f"{idx}. {log}") ``` #### 总结 上述方法展示了如何借助 Redis 的高性能特性构建一套简易的日志记录系统。它不仅能够满足实时性的需求,还支持灵活扩展与维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值