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);
}
}
使用
连接字符串
- https://www.cnblogs.com/gygtech/p/14872036.html
"Cache": "localhost:6379,password=123456,preheat=5,idleTimeout=600,defaultDatabase=13,prefix=Cache"
- 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
- 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))