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)) 
posted @ 2021-11-05 15:49  Alex_Mercer  阅读(239)  评论(0编辑  收藏  举报