Redis学习

1.数据类型

Redis支持五种数据类型,分别是String(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)。

1.1 String(字符串)

string 是 redis 最基本的类型,可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
Redis学习_第1张图片

1.2 Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
在这里插入图片描述

1.3 List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Redis学习_第2张图片

1.4 Set(集合)

Redis 的 Set 是 string 类型的无序集合,且不允许有重复的成员。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
Redis学习_第3张图片

1.5 Zset(有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。
Redis学习_第4张图片

2.Redis keys命令

Redis学习_第5张图片

3. Redis String命令

Redis学习_第6张图片

4.Redis Hash命令

Redis学习_第7张图片

5.Redis List 命令

Redis学习_第8张图片

6.Redis Set 命令

Redis学习_第9张图片

7.Redis Zset 命令

Redis学习_第10张图片

8.Redis 修改密码

config set requirepass 123456 # 添加密码
config get requirepass		# 获取密码
config set requirepass ""   # 清空(取消)密码

9.Redis函数接口

redisConnect函数

// 函数原型
// 该函数用来连接 Redis 数据库,函数参数为字符串类型的 ip 地址和整型端口号。
// 返回值为 redisContext 类型的指针。
redisContext* redisConnect(const char *ip, int port);
string ip = "192.168.44.100";
int port = 6379;
redisContext* redis = redisConnect(ip.c_str(), port);
if (redis != nullptr && redis->err != 0) {
    cout << "connect error: " << redis->err << endl;
}

redisCommand函数

// 函数原型
// 该函数执行redis数据库中的操作命令,第一个参数为连接数据库时返回的redisContext*,剩下的参数为变参,
// 就如C标准函数printf函数一样的变参。 
// 返回值为void*,一般强制转换成为redisReply类型,以便做进行进一步的处理。
void* redisCommand(redisContext* c, const char* format, ...);
redisReply* reply = (redisReply*)redisCommand(redis, "set key value");
redisReply* reply = (redisReply*)redisCommand(redis, "set key %s", value);
redisReply* reply = (redisReply*)redisCommand(redis, "set %s %s", key, value);
 
redisReply* reply = (redisReply*)redisCommand(redis, "get %s", key);
redisReply* reply = (redisReply*)redisCommand(redis, "get key");
 
// ...
// 返回的reply有几种类型
//错误码
#define REDIS_ERR_IO 1 /* Error in read or write */
#define REDIS_ERR_EOF 3 /* End of file */
#define REDIS_ERR_PROTOCOL 4 /* Protocol error */
#define REDIS_ERR_OOM 5 /* Out of memory */
#define REDIS_ERR_OTHER 2 /* Everything else... */
 
//OK码
#define REDIS_REPLY_STRING 1    //存放在char *str
#define REDIS_REPLY_ARRAY 2		 //存储数组
#define REDIS_REPLY_INTEGER 3   //integer存储为数据条数
#define REDIS_REPLY_NIL 4			 // null值
#define REDIS_REPLY_STATUS 5   //成功状态码为:"OK"  存放在char *str
#define REDIS_REPLY_ERROR 6    //存放在char *str
void Redis::HMSET(const string& key, const unordered_map<string, string> values)
{
    unordered_map<string, string>::const_iterator iter = values.begin();
    cout << key << " " << iter->first << " " << iter->second << endl;
    this->m_reply = (redisReply*)redisCommand(this->m_connect, "HMSET %s %s %s", key.c_str(), iter->first.c_str(), iter->second.c_str());
    if(this->m_reply->type == REDIS_REPLY_STATUS)
        cout << this->m_reply->str << endl;
}

redisCommandArgv函数

// 函数原型
// 和redisCommand函数差不多,但是可以批量的执行命令。
void* redisCommandArgv(redisContext *c, int argc, const char **argv, const size_t *argvlen);

freeReplyObject函数

// 函数原型
// 用来释放 redisCommand 函数执行后返回的 redisReply 所占用的内存。
void freeReplyObject(void* reply);

redisFree函数

// 函数原型
// 用来断开 redisConnect 函数所产生的连接,并释放 redisContext 的内容。
void redisFree(redisContext* c);

你可能感兴趣的:(redis,学习,bootstrap)