---FD---
此文章为redis上手时相关记录,现记录下来好以后查找问题~
1、redis安装的相关链接,能够完成安装
https://www.cnblogs.com/renzhicai/p/7773080.html
2、C环境下demo编写
(1)通过上文安装好之后,开始在C环境下demo编写
https://blog.csdn.net/hj19870806/article/details/8724907
(2)在上文运行时出现了找不到libhiredis.so.0.13的情况,查看了链接:
https://blog.csdn.net/ydyang1126/article/details/51362729(解决问题)
/usr/local/lib为我libhiredis.so.0.13存放地址
应为动态库调用的时候缺少,所以加入/etc/ld.so.conf中:
include ld.so.conf.d/*.conf
/usr/local/lib
sudo /sbin/ldconfig(再输入此命令,再回到之前位置编译即可完成运行)
3、redis 命令及C demo代码了解
(1)刚在微信上看到的一篇讲redis更深一点的文章(还没看先记录下来)
https://mp.weixin.qq.com/s/m-RdJQdG-qW-BLquorhMlQ
(2)redis的数据结构
分为:(用的较多的是string/hash,在一些涉及到排名的功能sorted-set(zset)用的多一些)
string (字符串结构)
赋值:set 删除:del
取值:get 数值增减:incr/decr
扩展命令:incrby/decrby
Hash(键值对的map结构)
赋值:hset key username jack(命令+key+键值对)
取值:hget 删除:hdel
增减数值:hincrbu/hdecrby
自学命令:hexists/hlen/hkeys/hvals
list(结构分为两种,一种为由数组形式构成,一种由双向链表连接方式)
两端添加:
左边插入(lpush),右边插入(rpush)
两端弹出:
左边弹出(lpop),邮编弹出(rpop)
查看列表:lrange(命令) + list(key 名) + 0(开始编号) + 5(结尾编号)
获取列表个数:llen
扩展命令:
lrem: 删除某一值的所有元素
lset: 设置时覆盖之前的值
set(无排序的数字集合,集合中的值不能重复)
添加:sadd
删除:srem
获得集合中的元素:sismember(看集合是否存在)
求取集合之间的命令:
差集:(参数顺序不同结果不同)
交集:sdiff
并集:sinter
扩展命令:
smembers (查看所有元素)
scard (查看元素的所有个数)
srandmember (随机取出一个)
sdiffstore my1 my2 my3 (my2/my3 的差集给 my1)
sinterstore my1 my2 my3 (my2/my3 的交集给 my1)
suniorstore my1 my2 my3 (my2/my3 的并集给 my1)
sorted-set(成员集合有序,且能快速增删)
(应用场景游戏排名,微博排名)
添加:zadd mysort 70 zs 80 ls 90 ww (70/80/90 指的是分数,通过分数在结构体中排序)
删除:zrem
获得:zscore(分数) zcard(成员)
范围查询:
zrange mysort 0 -1 withscores(小->大)
zrevrange mysort 0 -1 withscores(大->小)
扩展命令:
zincrby(特定成员加分)
zscore(某成员的分数)
zcount(某分数多少成员,可一个分数多个成员)
(3)demo C API理解:
redisContext* c = redisConnect((char*)"127.0.0.1", 6379); //链接本地127.0.0.1,端口为6379的redis
const char* command1 = "set stest1 value9"; //set命令
redisReply* r = (redisReply*)redisCommand(c,command1); //执行此条语句
redisAppendCommand(c,command1); //放入缓存区,等待redisGetReply再执行
redisGetReply(c,(void**)&reply)