全局: redis-cli,redis客户端;远程例子 redis-cli -h 127.0.0.1 -p 6379 -a "sendinfo" del [key];exists [key];
Expire key time;为key设置过期时间,time单位为秒
pexpire ...;和expire命令相同,只是过期时间单位为毫秒,pttl..相对应的命令都加p
expireat 。。。。用时间戳来作为过期时间(单位秒)
pexpireat 。。。。用时间戳来作为过期时间(单位毫秒)
ttl key:检查k还有多长时间过期,-2为k不存在,-1为永久
persist key:清除过期时间,成功 1,不存在或永久0。。。。。字符串 set key aa 命令会取消过期时间,其他类型没关系
setex key seconds value;(类似于 SET key value
EXPIRE key seconds # 设置生存时间)原子性操作
SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
EX seconds ? 设置指定的到期时间(以秒为单位)。
PX milliseconds - 设置指定的到期时间(以毫秒为单位)。
NX - 仅在键不存在时设置键。
XX - 只有在键已存在时才设置。
例:SET mykey "redis" EX 60 NX------以上示例将在键“mykey”不存在时,设置键的值,到期时间为60秒。
前言:
redis有五种数据类型,string,列表,集合,有序集合,散列
1. set [key] [value] ;
get [get];
mset [key1] [value1] [key2] [value2]....;
mget ...;
incr [key];增加1
decr [key];递减1
incrby [key] n; 增加n的数值;
decrby [key] n;减少n的数值;
incrbyfloat [key] n.n;追加小数如:incrbyfloat str 2.3
append [key] " string";在value尾部追加字符串,加双引号来区分空格,返回值为操作后的总长度
strlen [key] ;返回占用字节数的长度,汉字的话返回(汉字*3,utf-8占三个字节)
ps:
2.列表(可重复) 语法 lpush [key] value
lpush:将给定值推入列表的左端,返回当前列表值的个数
rpush:右端
lrange [key] 0 -1(0到-1表示所有值)
lindex [key] 1;返回当前列表第2个元素的位置(下标从0开始)lset [key] index value,gei index 下标值赋值
ltrim key a b;删除 a-b之外的值~
lpop [key];删除列表左边一个数据
rpop [key];右。。;
llen [key];返回列表长度,key不存在返回0
lrem [key] num value;当num>0 从左开始删除前numde value 值,num<0 从又...,num=0 del all;
linsert key before|after val value; 从左开始查找val元素,找到然后根据before|after 把value插入到val前或后;
rpoprpush key1 key2 ;在key1右边弹出一个元素然后压入key2(整个过程是原子性的),返回key2元素个数;
可以做任务队列
3.集合(散列表来实现不重复建,无序)
sadd [Key] [value];成功返回 1 else 0;
smembers [Key];返回该集合所有元素(集合元素很多会很慢);
sismember [key] [value];检查该集合的该元素是否存在;不存在 0,else 1;
srem [key] [Value];移除该元素,返回结果为移除元素的个数
spop key 因为集合无序 ,所以随机选择一个值弹出
scard key;获取元素个数
srandmember key count;在集合中随机获取count个值,count>0获得值不重复 <0可能重复
集合运算:
sdiff(差集);
sadd seta 1 2 3; sadd setb 234; sadd setc 345;
sdiff seta setb => 1;
sdiff seta setb setc => 1; ps:只返回左边集合的差集;
sinter(交集);
sinter seta setb setc =>3;
sunion(并集)
sunion seta setb setc=>1 2 3 4 5
sdiffstore key key1 key2 ...;把运算的结果放人key键中
sinterstore ...
sunionstore ...
4.散列 (对象很像)
1.hset [key] [属性] [value] hset user:1 name wangdage;
2.hget ...
3.hmset [key] [属性] [value] [属性] [value] ...; hmset user:1 name wangdage age 12;
4.hmget ...
5.hmgetall [key] ;
6.hdel [key] [属性];ps:删除某个键下的某个建(属性);hdel user:1 name;
7.hincrby user:1 age 1;为散列表age 增加1(数值)
8.hexists [key] name;判断字段是否存在 true:1 else 0,key 不存在 0;
9.hsetnx [key] name laowang;(原子性)和 hset 类似,字段存在则不做操作;
10.hkeys [key];获取所有字段; hvals ..all 字段值; hlen [key] 字段数量
5.有序集合(按照分值排序,增加一列数字来维护排序)
zadd [key] [分值] [value]
zrange [key] 0 -1(所有数据 zrange treemap 0 -1 withscores(显示分数) )从小到大
zrange [key] 0 -1 limit a b;获取a偏移量前b个数据
zrevrange [key] 0 -1 withscores# 从大到小
zrangebyscore [key] [0-n](分值范围,包含0 ,n的值) withscores ;根据分值查询;0-(n 不包含n分的值;
0- +inf(无穷)-inf(负无穷); zrangebyscore [key] 0-n limit a b;
zrem [key] [val];移除某值,成功 1 else 0;
zincrby treemap 5.33 xiaoxiaodi;为treemap xiaoxiaodi成员增加5.33分;
zscore treemap c;返回该成员的 分值;没有则返回 nil ;treemap 不为有序集合返回error
zcard key ;返回集合个数
zcount key a b;返回分值a-b之间成员的个数
zremrangebysore key min max ;按照分数范围删除成员
zrank key val;获取取元素排名,从左开始; zrevrank key val;从右。。
zinterstore(交集) newset 2 key1 key2 WEIGHTS [ num1 num2 ... ] aggregat [sum|max|min] withscores
计算key1key2集合的交集给newset集合,weights 为分数的权重,即key1的分数*num1 然后在根据aggregat
后面的参数来计算(sum时newset的分数取key1+key2的分数,max取其中最大,min。。。)
Zunionstore(并集)...
6.HyperLogLog
作用:计数并去重,不精确(标准误差是 0.81%),超级节省内存
场景:uv(页面的访问用户数)
pfadd key element [element …] ; pfadd 2019_07_06:unique:ids "userid1" "userid2" "userid3" ... (存的时候会去重)
pfcount key [key …] ;pfcount key1 key2 (统计多个key的总数 并去重)
pfmerge destkey sourcekey [sourcekey ...] 合并多个key 到 destkey 并去重
7. bitmap (位图,位数组)
setbit key offset value ; 设置键的第offset个位的值(从0算起)
gitbit key offset;
bitcount key [start][end];获取Bitmaps指定范围值为1的个数,[start]和[end]代表起始和结束字节数,不要[start]和[end]也可以
bitop op destkey key[key....] ; op为(and,or,,) bitop是一个复合操作,它可以做多个Bitmaps的and(交集)、or(并
集)、not(非)、xor(异或)操作并将结果保存在destkey中。and操作为 交集,or为并集
bitpos key targetBit [start] [end] ; [start] [end] 范围内第一个为targetBit(0 或 1) 的偏移量
7.事物
multi 开始事物,exec退出事物 (事物中的命令是在exec之后执行)
watch 监控一个或多个K,一旦其中一个被修改(或删除)当一个key因为过期被删并不会认为该k被改变,阻止之后的一个事物执行,遇到exec结束
unwatch 取消上一个watch
SETNX key value; 将 key 的值设为 value ,当且仅当 key 不存在。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值:
设置成功,返回 1 。
设置失败,返回 0 。