How to use Redis cache server under Windows

高洛峰
Release: 2023-03-05 15:24:02
Original
1295 people have browsed it

1. Redis server


First download the Redis server, click to download the .msi version, double-click to install the Redis server, and it will be installed as a service. Start the system together:

How to use Redis cache server under Windows

The first thing after installing the Redis server is to set a password and enter the installation directory: C:\Program Files\Redis - Find the configuration file: redis. windows-service.conf - Find: # requirepass foobared - Enter, line feed and add: requirepass Write your new password here (write it on the top line, without leaving a space in front) - Go to the service and restart the Redis service, or restart the computer

The disadvantages of not setting a password can be understood by looking at what happened to this guy from Ctrip: Remember an incident where Redis was attacked


2. Redis client (command line and Visual tool RDM)

Command line demonstration: start Redis client, read and write Redis server

How to use Redis cache server under Windows

Command explanation in the above picture:

cd C:\Program Files\Redis: The cd command enters the Redis installation directory, which is equivalent to double-clicking to enter the Redis installation directory in Windows.

redis-cli.exe: Opens the redis-cli client program, which is equivalent to Windows Double-click to run an exe program in the system (after installing the above Redis server program, a client program is needed to connect to the server. To connect to the local redis server, type this command directly. To connect to the remote, you need to add the ip and port, for example: redis- cli.exe -h 111.11.11.111 -p 6379)


keys *: View all key-value pairs (if the Redis server has a password set, this command will report an error, need Enter the password first and execute this command: auth your password)

set blog oppoic.cnblogs.com: Set a key-value pair, the key is: blog, the value is: oppoic.cnblogs.com (stored by directory : set directory name: key value)

get blog: Get the value corresponding to the key blog

keys *: View all key-value pairs

Other commonly used commands:

config get dir: Get the redis installation directory

ping: Return PONG to indicate that the redis server is normal

redis-cli.exe: Enter the first database (default), redis has a total of 0 There are 16 libraries in total to 15, enter the third library redis-cli -n 2 (already entered, select 0~15 to switch at will)

quit: Exit the redis program

exit: Exit dos window

flushdb: Delete all keys in the currently selected database

flushall: Delete databases in all databases

More commands: https://redis.io/ commands

At this point, a Redis cache server running on the local machine has been set up and can be read and written. However, the command line is obviously not friendly to novice users. The visualization tool appears: Redis Desktop Manager (https://redisdesktop.com/download)

How to use Redis cache server under Windows

The tree on the left shows that there are already Once connected, click Connect to Redis Server at the bottom to add another connection:

Name: connection name, start as you like

Host: host address, this machine is 127.0.0.1, input remotely Corresponding IP

Port: Port, the Redis server default port is 6379

Auth: password, enter it if set, leave it blank if not set

You can see it after connecting to the Redis server , the default is 16 libraries (the configuration file can be changed), and the index starts from 0. A common usage is to have one project and one library, and different functional modules under the project are stored in different directories under this library.

Needless to say, the operation after having the visualization tool is to double-click, right-click to create, and delete. . . Anyone who knows how to use Windows system will use this tool. Compared with the command line, Redis Desktop Manager is a visual tool that is more user-friendly and more convenient for debugging data on remote servers.

Note: This machine can do this. To connect to the remote server, you need to go to the Redis installation directory on the server, find the redis.windows-service.conf file, find bind 127.0.0.1, add "#" in front of it, comment it out, and then Right-click on the service to restart the redis service, or restart the Windows system

3. C# operating Redis server

The above are all command lines and visual tools to operate Redis server. C# programs need to use StackExchange.Redis(https://github.com/StackExchange/StackExchange.Redis to operate Redis) ), in order to call it uniformly, a RedisHelper helper class is encapsulated:

using Newtonsoft.Json; using StackExchange.Redis; using System; using System.ComponentModel; using System.Configuration; using System.Reflection; using System.Text; namespace redis_Demo { ///  /// Redis 帮助类 ///  public static class RedisHelper { private static string _conn = ConfigurationManager.AppSettings["redis_connection_string"] ?? "127.0.0.1:6379"; private static string _pwd = ConfigurationManager.AppSettings["redis_connection_pwd"] ?? "123456"; static ConnectionMultiplexer _redis; static readonly object _locker = new object(); #region 单例模式 public static ConnectionMultiplexer Manager { get { if (_redis == null) { lock (_locker) { if (_redis != null) return _redis; _redis = GetManager(); return _redis; } } return _redis; } } private static ConnectionMultiplexer GetManager(string connectionString = null) { if (string.IsNullOrEmpty(connectionString)) { connectionString = _conn; } var options = ConfigurationOptions.Parse(connectionString); options.Password = _pwd; return ConnectionMultiplexer.Connect(options); } #endregion ///  /// 添加 ///  /// 目录 /// 键 /// 值 /// 过期时间,单位:分钟。默认600分钟 /// 库,默认第一个。0~15共16个库 ///  public static bool StringSet(CacheFolderEnum folder, string key, string value, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, value, TimeSpan.FromMinutes(expireMinutes)); } ///  /// 获取 ///  /// 目录 /// 键 /// 库,默认第一个。0~15共16个库 ///  public static string StringGet(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return null; } } ///  /// 删除 ///  /// 目录 /// 键 /// 库,默认第一个。0~15共16个库 ///  public static bool StringRemove(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyDelete(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } ///  /// 是否存在 ///  /// 键 /// 库,默认第一个。0~15共16个库 public static bool KeyExists(CacheFolderEnum folder, string key, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExists(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); } catch (Exception) { return false; } } ///  /// 延期 ///  /// 目录 /// 键 /// 延长时间,单位:分钟,默认600分钟 /// 库,默认第一个。0~15共16个库 public static bool AddExpire(CacheFolderEnum folder, string key, int min = 600, int db = -1) { try { string fd = GetDescription(folder); return Manager.GetDatabase(db).KeyExpire(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, DateTime.Now.AddMinutes(min)); } catch (Exception) { return false; } } ///  /// 添加实体 ///  /// 目录 /// 键 /// 实体 /// 延长时间,单位:分钟,默认600分钟 /// 库,默认第一个。0~15共16个库 public static bool Set(CacheFolderEnum folder, string key, T t, int expireMinutes = 600, int db = -1) { string fd = GetDescription(folder); var str = JsonConvert.SerializeObject(t); return Manager.GetDatabase(db).StringSet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key, str, TimeSpan.FromMinutes(expireMinutes)); } ///  /// 获取实体 ///  /// 目录 /// 键 /// 库,默认第一个。0~15共16个库 public static T Get(CacheFolderEnum folder, string key, int db = -1) where T : class { string fd = GetDescription(folder); var strValue = Manager.GetDatabase(db).StringGet(string.IsNullOrEmpty(fd) ? key : fd + ":" + key); return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject(strValue); } ///  /// 获得枚举的Description ///  /// 枚举值 /// 当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用 /// 枚举的Description private static string GetDescription(this Enum value, Boolean nameInstead = true) { Type type = value.GetType(); string name = Enum.GetName(type, value); if (name == null) { return null; } FieldInfo field = type.GetField(name); DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; if (attribute == null && nameInstead == true) { return name; } return attribute == null ? null : attribute.Description; } } }
Copy after login

Add a record with the key name and the value wangjie to the fd1 directory of the first library of the redis server:

RedisHelper.StringSet(CacheFolderEnum.Folder1, "name", "wangjie");
Copy after login

Get this record:

string key = RedisHelper.StringGet(CacheFolderEnum.Folder1, "name"); Console.WriteLine("键为name的记录对应的值:" + key);
Copy after login

Delete this record:

bool result = RedisHelper.StringRemove(CacheFolderEnum.Folder1, "name"); if (result) { Console.WriteLine("键为name的记录删除成功"); } else { Console.WriteLine("键为name的记录删除失败"); }
Copy after login

Query whether this record exists:

bool ifExist = RedisHelper.KeyExists(CacheFolderEnum.Folder1, "name"); if (ifExist) { Console.WriteLine("键为name的记录存在"); } else { Console.WriteLine("键为name的记录不存在"); }
Copy after login

Go to the fd2 directory of the second library of the redis server , add a record with the key sd1 and the value an object:

Student student = new Student() { Id = 1, Name = "张三", Class = "三年二班" }; RedisHelper.Set(CacheFolderEnum.Folder2, "sd1", student, 10, 1);
Copy after login

Get this object:

Student sdGet = RedisHelper.Get(CacheFolderEnum.Folder2, "sd1", 1); if (sdGet != null) { Console.WriteLine("Id:" + sdGet.Id + " Name:" + sdGet.Name + " Class:" + sdGet.Class); } else { Console.WriteLine("找不到键为sd1的记录"); }
Copy after login

Source code: (http://files.cnblogs.com/files/oppoic/redis_Demo .zip)

The environment is VS 2013. If it cannot run, copy the code in cs and compile and run it yourself


4. Others

MSOpenTech developed the Redis cache server with built-in persistence. After writing, the key-value pair will still exist when the computer is restarted. Generally, the expiration time must be set for writing the key-value pair, otherwise the memory occupied will not be released. Redis storage method not only has keys corresponding to strings, but also corresponds to List, HashTable, etc. Of course, more advanced uses of Redis are still under Linux.

For more articles related to the use of Redis cache server under Windows, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!