[redis] 数据特性简单实验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[redis] 数据特性简单实验相关的知识,希望对你有一定的参考价值。
位图
由bit位组成的数组,实际的底层数组类型是字符串,而字符串的本质是二进制大对象,所以将其视作位图,位图存储的是boolean指,一定程度上可以减少存储空间。
127.0.0.1:6379> setbit "users_tried" 100 1 -- 设置位图指定偏移量的比特位的值 (integer) 0 127.0.0.1:6379> getbit "users_online_order" 400 -- 获取指定偏移处比特位的值 (integer) 0 127.0.0.1:6379> bitcount "users_tried" -- 位图中被设置为1的数 (integer) 1 127.0.0.1:6379> bitop and "users_tried_ID" "users_tried" "users_online_order" -- 位操作, 包括and or xor not;位运算的结果被保存在目标键中 (integer) 13 127.0.0.1:6379> bitcount "users_tried_ID" (integer) 0
设置键的过期时间:
对于键的管理,我们不仅可以使用del 和 unlink 删除键,还可以设置键的过期时间,让其自动删除。
127.0.0.1:6379> lpush "test" 20 30 40 50 80 (integer) 5 127.0.0.1:6379> expire "test" 20 -- 设置键的过期时间为20 秒 (integer) 1 127.0.0.1:6379> ttl "test" (integer) 14 127.0.0.1:6379> exists "test" -- 20 秒过后 (integer) 0
如何清除一个键的过期时间:
使用persist持久化键;键的值被删除或者替换;被另一个过期的键重命名。
expireat 和 expire 命令类似,但它可以指定一个绝对的Unix时间。
sort:
127.0.0.1:6379> sadd "test" 24 54 2 34 5 6 24 (integer) 6 127.0.0.1:6379> sort "test" 1) "2" 2) "5" 3) "6" 4) "24" 5) "34" 6) "54" 127.0.0.1:6379> sadd "test2" "sdjdvd" "dvdvd" "awrb" "vvparn" (integer) 4 127.0.0.1:6379> 127.0.0.1:6379> sort "test2" alpha 1) "awrb" 2) "dvdvd" 3) "sdjdvd" 4) "vvparn" 127.0.0.1:6379> sort "test2" alpha limit 0 2 1) "awrb" 2) "dvdvd" 127.0.0.1:6379> sort "test2" alpha desc 1) "vvparn" 2) "sdjdvd" 3) "dvdvd" 4) "awrb
高级用法
sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
使用管道
根据redis的通信协议,客户端执行一条命令的过程是:1.Client发送一条命令;2.Server接收命令放入队列;3.执行命令;4.返回结果;
管道的目的是在于减少Client和Server的传输时间;
redis-cli --pipe commandFile
redis事务:
multi 开启事务,exec 提交事务;
注意redis的事务和关系型数据库事务的区别:redis事务没有回滚功能。一般redis的事务出错在两个地方:1.语法错误;2. 错误命令之后的其他命令都会被执行。
发布订阅:
发布者:
127.0.0.1:6379> publish "test" "msg one" (integer) 2 127.0.0.1:6379> publish "test" "msg two" (integer) 2 127.0.0.1:6379> publish "test" "msg tree" (integer) 2
订阅者:
127.0.0.1:6379> subscribe "test" Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "test" 3) (integer) 1 1) "message" 2) "test" 3) "msg one" 1) "message" 2) "test" 3) "msg two" 1) "message" 2) "test" 3) "msg tree"
subscribe 命令用来监听特定频道的可用消息,可以一次订阅多个频道,也可以使用 psubscribe 订阅匹配指定模式的频道。取消订阅频道 unsubscribe
调试Lush脚本: