
Redis缓存操作(添加缓存,删除缓存,修改缓存)的代码实现
首先介绍一下:Redis支持五种数据类型:String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)
相关方法:
1.String(字符串):String是resid最基本的类型,一个key对应一个value。String类型是二进制安全的。string中可以包含任何数据。
set:添加/覆盖一个字符串或者数组类型
get:获取值
mget:获取多个key的值
DECR/INCR:数字类型的数据自增减和自增
2.list(列表):类似java的LinkedList,通过链表来完成。像添加元素速度非常快,但取元素速度非常慢。因此list结构适合大数据量要求插入速度极快的场景。
rpush:将多个值放入list尾部(右边)
lpush:将多个值放入list头部(左边)
lrange:能从左到右实现指定违反的列表
rpop:从list尾部抽取出一个元素
lpop:从list头部抽取一个元素
brpop/blpop:带阻塞的pop命令
llen:获取list长度
3.Hash(哈希):Redis中hash是一个键值(key=>value)对集合。hash是一个string类型的field和value的映射表,hash特别适合存储对象。
hset key filed value:给指定的key设置一个字段值,如果值已经存在,则覆盖。返回0表示失败,返回1表示成功。
hget key filed:获取指定key的field字段的值,如果不存在,返回nil。
hexists key field:判断指定的key的field字段是否存在,不存在返回0,存在返回1。
hkeys key:返回key所指定的hash所有的字段名。
hgetall key:返回所有的字段名和字段值
hdel key field:删除多个字段值
hincby key field value:对key指定的hash数据中的field的值进行计算,增加整型value
————————————————
下面说一下Redis的启用:
方案:先复制redis服务-->可以在解压的Redis里按住shift键+右键,打开命令窗口到控制台->到该文件的大路径
接着粘贴复制的名称。或者也可以直接cmd->到控制台,cd:到文件路径。效果如图:
复制回车后如图:
到这一步就算是开启Redis啦,下面就可以进行存取删的操作啦!示例如下:
然后再打开Redis里按住shift键+右键,打开命令窗口到控制台 输命令:Redis-cli就可以进行存取的操作了
redis对数据的操作:通过代码实现redis 操作功能:
1,先创建一个控制台应用程序.
注意:后台操作也需要启用redis服务-->执行命令:redis-server
2,我们要实现redis的依赖注入:工具-->Nu Get包管理器-->程序包管理控制台.
执行安装依赖的命令:install-package ServiceStack.Redis。
下面我们可以做一个简单的redis的创建和读取。代码如下:
- static void Main1(string[] args)
- {
- //安装依赖的命令:install-package ServiceStack.Redis
- using (RedisClient redisClient = new RedisClient("localhost:6379"))
- {
- //添加或者修改
- redisClient.Set<string>("city", "aaaa");
- //获取
- string value = redisClient.Get<string>("city");
- Console.WriteLine(value);
- }
- Console.ReadLine();
- }
例2:针对于list的操作,代码如下:
- using (RedisClient redisClient = new RedisClient("localhost:6379"))
- {
- //向redis list中添加
- //redisClient.AddItemToList("userList", "aa");
- //redisClient.AddItemToList("userList", "bb");
- //循环添加数据
- //for (int i = 0; i < 10; i++)
- //{
- // redisClient.AddItemToList("userList", "qq"+i);
- //}
- //获取list
- //string value = redisClient.GetItemFromList("userlist", 0);
- //Console.WriteLine(value);
- //删除
- //redisClient.RemoveItemFromList("userList", "qq4");
- //删除最后一个
- // redisClient.RemoveEndFromList("userList");
- //删除第一个
- // redisClient.RemoveStartFromList("userList");
- //清空,删除一个list里面所有的值
- //redisClient.RemoveAllFromList("userList");
- //遍历list
- //List<string> strlist = redisClient.GetAllItemsFromList("userList");
- //foreach (var item in strlist)
- //{
- // Console.WriteLine(item);
- //}
- //获取一个范围的list(可以做分页)
- //List<string> strlist = redisClient.GetRangeFromList("userList",0,4);
- //foreach (var item in strlist)
- //{
- // Console.WriteLine(item);
- //}
- ////向最前面插入一条数据
- //redisClient.PrependItemToList("userList", "ccccc");
- ////向中间某个位置插入数据
- //redisClient.SetItemInList("userList", 5, "aall");
- //创建新的list
- redisClient.Set<string>("userName", "mlyan");
- }
- Console.ReadLine();
例3:针对Hash的操作,代码如下:
- using (RedisClient redisClient = new RedisClient("localhost:6379"))
- {
- //添加hash键值对
- //redisClient.SetEntryInHash("userKV", "1000", "王健林");
- //redisClient.SetEntryInHash("userKV", "1001", "马化腾");
- //redisClient.SetEntryInHash("userKV", "1002", "雷军");
- //通过键获取值
- //string value = redisClient.GetValueFromHash("userKV", "1001");
- //Console.WriteLine(value);
- //遍历键值对
- //Dictionary<string, string> keyValuePairs = redisClient.GetAllEntriesFromHash("userKV");
- //foreach (var item in keyValuePairs)
- //{
- // Console.WriteLine(item.Key + ":" + item.Value);
- //}
- //遍历Key
- //List<string> strList = redisClient.GetHashKeys("userKV");
- //foreach (var item in strList)
- //{
- // Console.WriteLine(item);
- //}
- Console.WriteLine("-----------------------------");
- //遍历所有的value
- List<string> strlist = redisClient.GetHashValues("userKV");
- foreach (var item in strlist)
- {
- Console.WriteLine(item);
- }
- }
- Console.ReadLine();


Session