• Redis


    redis 问题点

    设置密码

    • windows
      • 文件redis.windows-service.conf
      • 找到含有requirepass字样的地方,追加一行,输入requirepass 12345。
      • 重启服务

    可视化界面管理工具RedisDesktopManager

    命令行连接redis

    连接本地

    redis-cli
    ping
    

    如果出现NOAUTH,则需要输入密码auth pwd

    操作命令

    • 查询所有key keys *
    • 切换库 select 2
    • 查看剩余时间 ttl key
    • 批量删除通配符key
      • 通过c# 代码,redis本身没有提供批量删除 (注意,特么CSRedis需要替换prefix)

    .net 使用redis

    nuget 包StackExchange.Redis

                ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("10.11.22.1:6379,10.11.22.1:6379,10.11.22.1:6379,password=123456");
                IDatabase db = redis.GetDatabase(0);
                db.StringSet("1", "2");
                var val = db.StringGet("1");
    

    .net 使用redis CSRedis (推荐这个)

                var csredis = new CSRedisClient("127.0.0.1:6379,password=123456");
                // RedisHelper.Initialization(csredis);
           
                Console.WriteLine(string.Join(',', csredis.Keys("*")));
                csredis.Set("user1", new User { Name = "user1",Age=10 });
                Console.WriteLine(csredis.Get("user1"));
                //过期时间
                //csredis.Set("user2", new User { Name = "user2" },3);
                //Console.WriteLine(csredis.Get("user2"));
                //System.Threading.Thread.Sleep(4000);
                //Console.WriteLine("过了时间段查询:"+csredis.Get("user2"));
                //批量删除通配符key
                var keyList= _redisDb._client.Keys("alex.system:play.info*").Select(a=> { return a.Replace("alex.system:", ""); }).ToArray();
                var a2= _redisDb._client.Del(keyList);
    

    封装了一层简单帮助类

        public class RedisCacheHelper
        {
            private readonly CSRedisClient _client;
            public RedisCacheHelper( )
            {
                _client= new CSRedisClient("127.0.0.1:6379,password=123456");
            }
    
            /// <summary>
            /// 添加,如果存在则替换
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="val"></param>
            /// <param name="expireSecond"></param>
            public void Set<T>(string key,T val,int expireSecond=-1)
            {
                _client.Set(key, val,expireSecond);
            }
    
            public T Get<T>(string key)
            {
               return _client.Get<T>(key);
            }
    
            public bool Exists(string key)
            {
                return _client.Exists(key);
            }
            public void Remove(string key)
            {
                _client.Del(key);
            }
    
    
        }
    

    使用

    连接字符串

    • defaultDatabase Redis服务器数据库
    • preheat 预热连接,接收值
    • idleTimeout 连接池中元素的空闲时间(MS),适合连接到远程redis服务器
    • prefix key前缀,所有方法都会附带此前缀, 结尾最好用:

    python 使用redis

    • 安装redis依赖包pip install redis
    • 运行报错partially initialized module 'redis' has no attribute 'ConnectionPool' (most likely due to a circular import)
      • py文件不能是redis.py
    • ex - 过期时间(秒)
    • Demo
    import redis
    # con='localhost:6379,password=123456,preheat=5,idleTimeout=600,defaultDatabase=02,prefix=alex.system.'
    # 厉害了,python找不到 prefix
    prefix='alex.system.'
    pool = redis.ConnectionPool(host='localhost',port=6379,password='123456',db='02',decode_responses=True)
    redisDb= redis.Redis(connection_pool=pool)
    
    a1=redisDb.get("fund.list")
    print(type(a1)) 
    
  • 相关阅读:
    建立一个能持续处理的C/S网络程序
    建立一个可以不停地接收客户端新的连接,但不能处理复杂的业务的C/S网络程序
    归并排序
    堆排序
    计数排序
    不要在PHP7中踩这些坑
    关于生活学习
    topthink/think-swoole 扩展包的使用 之 WebSocket
    PHP 三元运算符
    topthink/think-swoole 扩展包的使用 之 Task
  • 原文地址:https://www.cnblogs.com/Alex-Mercer/p/15513681.html
Copyright © 2020-2023  润新知