Redis学习笔记

Redis常用数据类型包括:string(字符串),list(链表), Hash(哈希),set(集合)及zset(sorted set) (有序集合),Pub/Sub,Transactions

1 String 字符串

常用命令:set,get,decr(递减),incr (递增),mget
String是最常用的一种数据类型,普通的key/value存储都可以归为此类 。一个Key对应一个Value,string类型是二进制安全的。Redis的string可以包含任何数据。
示例(C#):

var cilent=new RedisClient("127.0.0.1",6379);
client.Set<string>("UserName","admin");//Set
string uName=client.Get<string>("Name");//Get
client.Set<int>("VoteUser_Admin",0);//模拟投票
client.Incr("VoteUser_Admin");//投一票 -递增

2 Hash 哈希

常用命令:hget,hset,hgetall 等。
hash是一个string 类型的field和value的映射表。hash特别
适合存储对象。相对于将对象的每个字段存成单个string 类型。一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
示例(C#):

            // 存储一个 User 对象  
        //第一种方式  增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回
            var json = "user序列化字符串";
            var hashId = "UserAdmin";
            client.Set<string>(hashId, "json");
            // 第二种方式
            client.SetEntryInHash(hashId, "Name", "Admin");
            client.SetEntryInHash(hashId, "IP", "127.0.0.1");
            client.SetEntryInHash("UserAdmin", "Pwd", "127.0.0.1");
            //获取UserAdmin 的Name
            var name = client.GetValueFromHash(hashId, "Name");
            //获取所有的UserAdmin Key
            var keys = client.GetHashKeys(hashId);
            //获取所有UserAdmin value
            var values = client.GetHashValues(hashId);

3 List 链表

常用命令:lpush,rpush,lpop,rpop,lrange等。
list是一个链表结构,主要功能是push,pop,获取一个范围的所有的值等,操作中key理解为链表名字。 Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构 。
示例(C#):

   #region List基础使用
            var key = "demolist";
            client.AddItemToList(key, "123");
            client.AddItemToList(key, "1234");
            Console.WriteLine("List数据项条数:" + client.GetListCount(key));
            Console.WriteLine("List数据项第一条数据:" + client.GetItemFromList(key, 0));
            Console.WriteLine("List所有数据");
            client.GetAllItemsFromList(key).ForEach(e => Console.WriteLine(e));
            #endregion
            #region 队列使用
            client.EnqueueItemOnList("name", "zhangsan");
            client.EnqueueItemOnList("name", "lisi");
            int count = client.GetListCount("name");
            for (int i = 0; i < count; i++)
            {
                Console.WriteLine(client.DequeueItemFromList("name"));
            } 
            #endregion
#region 栈使用
                client.PushItemToList("name2", "wangwu");
             client.PushItemToList("name2", "maliu");
             int count = client.GetListCount("name2");
             for (int i = 0; i < count; i++)
            {
                Console.WriteLine(client.PopItemFromList("name2"));
            }
               #endregion

4 Set 集合

常用命令:sadd,spop,smembers,sunion
应用场景:提供一个列表的功能,set可以自动排除重复,当需要存储一个不重复的列表数据,可以选择set。set提供了一个判断某个成员是否在一个set集合中。

5 ZSet 有序集合

常用命令:zadd,zrange ,zrem,zcard
场景:zset 提供一个优先级参数来进行排序,并且是插入有序的,自动排序。需要一个有序的并且不重复的集合列表,可以选用。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文主要介绍 Redis 常用的基本操作命令和数据类型操作命令,也就是 Redis 的基本使用。通过学习本文,应该...
    江城子Leon阅读 677评论 0赞 0
  • Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis ...
    drfung阅读 1,070评论 0赞 10
  • It's called the what? The peach what?The Peachoid. It's a...
    冰封钻石阅读 242评论 0赞 0
  • 你是蜗牛, 你若爱我, 会为我去掉壳吗? 我讨厌那沉重的负担, 压在你的背上。 你是玫瑰, 你若爱我, 会为我去掉...
    小雨点点2018阅读 292评论 1赞 1
  • 在这个冬至,我用文字取暖。 一起醉酒,一起幽会春天,走进那年的湖边,催开满堤的樱花,品尝新沏的阳光。 再把一颗颗文...
    莫微阅读 241评论 0赞 0

友情链接更多精彩内容