建站教程的优点,企业网站介绍,做地方网站数据哪里来,环保网站 源码1.数据类型
Redis支持五种数据类型#xff0c;分别是String#xff08;字符串#xff09;、hash#xff08;哈希#xff09;、list#xff08;列表#xff09;、set#xff08;集合#xff09;、zset#xff08;有序集合#xff09;。
1.1 String#xff08;字符…1.数据类型
Redis支持五种数据类型分别是String字符串、hash哈希、list列表、set集合、zset有序集合。
1.1 String字符串
string 是 redis 最基本的类型可以理解成与 Memcached 一模一样的类型一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型string 类型的值最大能存储 512MB。
1.2 Hash哈希
Redis hash 是一个键值(keyvalue)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表hash 特别适合用于存储对象。
1.3 List列表
Redis 列表是简单的字符串列表按照插入顺序排序。你可以添加一个元素到列表的头部左边或者尾部右边。
1.4 Set集合
Redis 的 Set 是 string 类型的无序集合且不允许有重复的成员。 集合是通过哈希表实现的所以添加删除查找的复杂度都是 O(1)。
1.5 Zset有序集合
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
2.Redis keys命令 3. Redis String命令 4.Redis Hash命令 5.Redis List 命令 6.Redis Set 命令 7.Redis Zset 命令 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 *strvoid Redis::HMSET(const string key, const unordered_mapstring, string values)
{unordered_mapstring, 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);