эй, у меня есть ac # серверное приложение, которое имеет db (mysql), и довольно часто, из-за моей текущей схемы БД, мне приходится извлекать идентификатор пользователя по его имени, чтобы манипулировать данными пользователя (например,как редактирование его таблиц базы данных профиля и т. д.).
Я думал о создании простого класса кэша, который, когда он обрабатывает запрос для конкретного отображения username to userid
, кэширует результат в словаре или даже ввыделенный словарь для первого символа данного имени пользователя.
Вот пример того, о чем я думал:
public class UsernameToIdCache
{
public int GetUserIdFromUsername(string username)
{
if (string.IsNullOrEmpty(username)) return -1;
var targetDictionary = _cacheDictionaries[username[0]];
int id;
if (targetDictionary.TryGetValue(username,out id))
{
return id;
}
else
{
id = RunSqlQuery("select id from users where username ='" + username + "'");
if (IsDictionaryNotFull(targetDictionary))
{
targetDictionary.Add(username,id);
return id;
}
}
}
}
метод IsDictionaryNotFull(Dictionary<int,string>)
используется для управления памятью (я делаюне хочу, чтобы словари взрывались, так что это может помочь только до тех пор, пока словари не заполнятся).
что вы думаете?Это хорошая практика кодирования БД?