redis中的key可以是long,double,int,string类型的,但最终都存储为string类型.
set student Amy
set student Bob
setnx student Cindy(报错)
序号 命令及描述
1 HDEL key field1 [field2] 删除一个或多个哈希表字段
2 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
3 HGET key field 获取存储在哈希表中指定字段的值。
4 HGETALL key 获取在哈希表中指定 key 的所有字段和值
5 HINCRBY key field increment 为哈希表key中的指定字段的整数值加上增量 increment 。
6 HINCRBYFLOAT key field increment 为哈希表key中的指定字段的浮点数值加上增量 increment 。
7 HKEYS key 获取所有哈希表中的字段,数据量大(生产环境)不要用,会阻塞线程
8 HLEN key 获取哈希表中字段的数量
9 HMGET key field1 [field2] 获取所有给定字段的值
10 HMSET key field1 value1 [field2 value2 ]同时将多个field-value(域-值)对设置到哈希表key中
11 HSET key field value 将哈希表key中的字段field的值设为value
12 HSETNX key field value 只有在字段field不存在时,设置哈希表字段的值
13 HVALS key 获取哈希表中所有值
14 HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对
hset article:10086 name FemaleRights author Muten
hget article:10086 name
hget article:10086 author
一般来说是左变边插入数据右边出来的.
集合的元素是唯一的.
序号 命令及描述
1 ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
2 ZCARD key 获取有序集合的成员数
3 ZCOUNT key min max
计算在有序集合中指定区间分数的成员数
4 ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
5 ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
零声学院版权所有
King 老师 QQ: 3147964070
6 ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量
7 ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合成指定区间内的成员
8 ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员
10 ZRANK key member
返回有序集合中指定成员的索引
11 ZREM key member [member ...]
移除有序集合中的一个或多个成员
12 ZREMRANGEBYLEX key min max
移除有序集合中给定的字典区间的所有成员
13 ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员
14 ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员
15 ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底
16 ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序
17 ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
18 ZSCORE key member
返回有序集中,成员的分数值
19 ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中
20 ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)
127.0.0.1:6379> zadd LanguageRank 1 C
(integer) 1
127.0.0.1:6379> zadd LanguageRank 3 Java
(integer) 1
127.0.0.1:6379> zadd LanguageRank 2 CPP
(integer) 1
127.0.0.1:6379> zadd LanguageRank 4 Python
(integer) 1
127.0.0.1:6379> zrange LanguageRank 0 10
1) "C"
2) "CPP"
3) "Java"
4) "Python"
论坛不要用list来做,有人回帖了要更新到前面去,
(1)先把对应id从list中删除,时间复杂度是n;
(2)再把id重新lpush,这个时候才能到最前面.
通过(1)(2)两步知道这个是非常不好的.
此时可以考虑用有顺序的SortedSet
客户端5在客户端4在redisChat频道发布两次消息之后订阅了redisChat,redisChat2和redisChat3这三个频道,然后收到了redisChat频道和redisChat2频道的消息.
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
1> 批量操作在发送 EXEC 命令前被放入队列缓存。
2> 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
3> 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
1> 开始事务。
2> 命令入队。
3> 执行事务
redis 事务的相关命令:
DISCARD-取消事务,放弃执行事务块内的所有命令
EXEC-执行所有事务块内的命令
MULTI-标记一个事务块的开始
UNWATCH-取消WATCH命令对所有key的监视
WATCH key [key ...]-监视一个(或多个)key,如果在事务执行之前这个(或这些) key被其他命令所改动,
那么事务将被打断.
因为事务在执行时会独占服务器,所以用户应该避免在事务中执行过多命令,更不要将一些需要进
行大量计算的命令放入事务中,以免造成服务器阻塞.
持久化方式有RDB和AOF两种方式.
RDB方式的会fork一个子进程将key-value全部赋值到硬盘.子进程采用写时复制的技术.
redis-cli -h 127.0.0.1 -p 6379 登录进入客户端(默认不用输入密码)
quit 退出客户端
FLUSHALL 删除所有数据库里面的所有数据,注意不是当前数据库,而是所有数据库
KEYS key 获取所有的key值
HKEY key 获取所有的key值
/home/muten/module/redis-6.0.9/deps/hiredis
gcc -o hiredis-test 002-hiredis-test.c -I /usr/local/include/hiredis -L /usr/local/lib -lhiredis
/usr/local/lib/libhiredis.so
测试代码路径:/home/muten/module/my-redis-learning/002-hiredis-test.c
git add 002-hiredis-test.c
git commit -m "submit 002-hiredis-test.c"
git push
tcpdump -i any dst host 127.0.0.1 and port 6379
tcpdump -i any dst host 127.0.0.1 and port 6379 -XX
/home/muten/module/redis-6.0.9/redis.conf(与/etc/redis/6379.conf一样)中的protected-mode的值为yes的时候可允许远程进行访问.
/home/muten/module/redis-6.0.9/utils/redis_init_script(启动脚本,与/etc/init.d/redis_6379是一样的)
一般redis是搭建在企业集群的内部的,是不会开放给外面的.
是的,redis的应用层协议是自定义的,传输层的协议是TCP协议.
因篇幅问题不能全部显示,请点此查看更多更全内容