配置文件参考资料
打开Linux终端 (管他三七二十一,我们先对软件源列表更新下,防止安装软件的时候出现无法定位软件包的问题)
执行更新软件源列表命令:sudo apt-get udpate
执行安装Redis命令: sudo apt-get install redis-server
执行启动Redis服务命令: sudo /etc/init.d/redis-server start
执行查看是否启动Redis服务的命令: redis-cli 如果启动成功:会是显示如下信息:↓ 127.0.0.1:6379>set myname "zhangshang" (这里我们用set命令写一条 键为myname,值为zhangshang的数据) OK (如果数据写入成功这里则会显示OK) 127.0.0.1:6379>get myname (然后我们用get命令来获取这条 键为myname的数据) "zhangshang" (在这里得到zhangshang)
sudo dir /etc/redis (首先查询redis文件夹下所有的文件,去这个文件夹去找一个叫redis.conf的配置文件)
如果有这个文件,我们用vi修改这个配置文件
sudo vi /etc/redis/redis.conf (用vi打开这个redis.conf的配置文件)
将redis.conf配置文件中的bind 127.0.0.1注释掉(改成#bind 127.0.0.1)保存
执行重启Redis命令:sudo /etc/init.d/redis-server restart
执行开启防火墙命令: sudo ufw enable
允许指定的IP访问这个Redis服务(redis默认端口为6379)
sudo ufw allow from 192.168.31.1 to any port 6379 (即:允许192.168.31.1这个IP访问6379这个端口)
(编辑或新增规则后需要重启防火墙才能生效)
执行重启防火墙命令: sudo ufw reload
搞定收工
如果想停止Redis服务,则执行如下命令
执行停止防火墙命令:sudo /etc/init.d/redis-server stop
用vi打开Redis的配置文件
执行用vi打开redis配置文件命令:sudo vi /etc/redis/redis.conf
打开之后在命令模式下输入 “/”(不要双引号) 搜索requirepass关键字
找到# requirepass foobared 这一行,将前面的#号删除,然后将foobared改成你要设置的密码
(最好是直接删除foobared,改成你要配置的密码,而不是再下面独立添加一行)
保存后,重启Redis服务(这里可能需要重启电脑)
如果不重启电脑可能报如下错误:
[....] Restarting redis-server (via systemctl): redis-server.serviceJob for redis-server.service failed because the control process exited with error code. See "systemctl status redis-server.service" and "journalctl -xe" for details. failed!
重启Redis服务
执行重启Redis命令:sudo /etc/init.d/redis-server restart
或者在重启命令后面追加配置文件:如下 ↓
执行重启Redis命令:sudo /etc/init.d/redis-server restart /etc/redis/redis.conf
使用redis-cli命令工具连接测试
执行连接Redis命令:sudo redis-cli
会弹出如下信息
127.0.0.1:6379> 我们只要在这个>后面输入auth 123456就可以了(123456是我redis的密码)即 127.0.0.1:6379>auth 123456 //回车 如果连接成功,则又会弹出如下信息 127.0.0.1:6379> 那么现在我们就可以对数据进行写入了。例如: 127.0.0.1:6379>set name "lily" //写入数据 127.0.0.1:6379>get name //获取数据
如果不想这么麻烦,就直接执行以下连接命
执行连接Redis命令:redis-cli -h 127.0.0.1 -p 6379 -a 123456
在用C#连接SQL数据库时,我们需要在Config配置文件里面配置SQL连接字符串,同样,在连接Redis时,也可以配置连接字符串:
注释:
syncTimeout:同步操作默认超时时间
///
/// Redis帮助类
///
public class RedisHelper
{
///
/// 连接字符串,一般写在配置文件里面
///
private static readonly string ConnectionString = "127.0.0.1:6379,password=123456,connectTimeout=1000,connectRetry=1,syncTimeout=10000";
///
/// 上锁,单例模式
///
private static object locker = new object();
///
/// 连接对象
///
private volatile IConnectionMultiplexer _connection;
///
/// 数据库
///
private IDatabase _db;
#region 创建Redis实例
public RedisHelper()
{
_connection = ConnectionMultiplexer.Connect(ConnectionString);
_db = GetDatabase();
}
private static RedisHelper redisHelper;
public static RedisHelper GetRedisHelper()
{
if (redisHelper == null)
{
lock (locker)
{
if (redisHelper == null)
{
redisHelper = new RedisHelper();
}
}
}
return redisHelper;
}
#endregion
///
/// 获取连接
///
///
protected IConnectionMultiplexer GetConnection()
{
if (_connection != null && _connection.IsConnected)
{
return _connection;
}
lock (locker)
{
if (_connection != null && _connection.IsConnected)
{
return _connection;
}
if (_connection != null)
{
_connection.Dispose();
}
_connection = ConnectionMultiplexer.Connect(ConnectionString);
}
return _connection;
}
///
/// 获取数据库
///
///
///
public IDatabase GetDatabase(int? db = null)
{
return GetConnection().GetDatabase(db ?? -1);
}
///
/// 设置
///
/// 键
/// 值
/// 过期时间
public virtual void Set(string key, object data, int? cacheTime=null)
{
if (data == null)
{
return;
}
var entryBytes = Serialize(data);
if (cacheTime != null)
{
var expiresIn = TimeSpan.FromMinutes(Convert.ToDouble(cacheTime));
_db.StringSet(key, entryBytes, expiresIn);
}
else
{
_db.StringSet(key, entryBytes);
}
}
///
/// 根据键获取值
///
///
///
///
public virtual T Get(string key)
{
var rValue = _db.StringGet(key);
if (!rValue.HasValue)
{
return default(T);
}
var result = Deserialize(rValue);
return result;
}
///
/// 判断键是否已存在
///
///
///
public bool IsExit(string key)
{
return _db.KeyExists(key);
}
///
/// 判断是否已经设置
///
///
///
public virtual bool IsSet(string key)
{
return _db.KeyExists(key);
}
///
/// 序列化
///
///
/// byte[]
private byte[] Serialize(object data)
{
var json = JsonConvert.SerializeObject(data);
return Encoding.UTF8.GetBytes(json);
}
///
/// 反序列化
///
///
///
///
protected virtual T Deserialize(byte[] serializedObject)
{
if (serializedObject == null)
{
return default(T);
}
var json = Encoding.UTF8.GetString(serializedObject);
return JsonConvert.DeserializeObject(json);
}
}