Redis 数据缓存
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();