Redis支持五种数据结构的key-value,分别是string字符串,linklist链表,set无序集合,order set有序集合,还有hash哈希数据类型等
Redis字符串String类型的操作:
1. set key value [ex 秒数] / [px 毫秒数] [nx] /[xx]
注:ex和px不能同时使用
nx : 此参数指定set时key不存在时在成功执行操作
xx:此参数指定set时key存在时在成功执行操作
2. mset multi set , 一次性设置多个键值
mset key1 val1 key2 val2 …….
3.get key 获取指定key的值
4.mget key1 key2 key3 获取多个key的值
5.setrange key offset value
把字符串的offset偏移字节,改成value,注意: 如果偏移量>字符长度, 该字符自动补0x00
6.append key value
往指定key的value中追加字符串
7.getrange key start stop
获取字符串中 [start, stop]范围的值
注意: 对于字符串的下标,左数从0开始,右数从-1开始(),比如,当stop为-2时,即右边倒数第二个字符
8.getset key newvalue
作用: 获取并返回旧值,设置新值
9.incr key
自增key的值,并且此值必须是数字
10. decr key
自减key的值,并且此值必须是数字
11.incrby key value
在此值的基础上加value。
12.decrby key value
在此值的基础上减value
13.incrbyfloat key value
在此值的基础上添加一个浮点值
Redis链表link结构的操作
1.lpush key value
插入链表头部
2.rpush key value
插入链表尾部
3.lrange key start stop
获取链表,从【start – stop】,start是从0开始算起,stop是从-1开始算起。
4.rpop key
从指定key的链表尾部取出value,并移除value。
5.lpop key
从指定key的链表头部取出value,并移除value。
· 6.lrem key count value
删除指定key的链表的指定的value,并且可以指定删除个数
7.ltrim key start stop
裁剪,剪切key对应的链接,切[start,stop]一段,并把该段重新赋给key
8.lindex key index
通过索引获取value
9.llen key
计算链接表的元素个数
10.linsert key after|before search value
在key链表中寻找’search’,并在search值之前|之后,.插入value
注: 一旦找到一个search后,命令就结束了,因此不会插入多个value
11.rpoplpush source dest
把source的尾部拿出,放在dest的头部,并返回 该单元值
12.brpop ,blpop key timeout
等待弹出key的尾/头元素, Timeout为等待超时时间,如果timeout为0,则一直等待
为方便演示,开启两个终端,一个用于插入链表,一个用于等待取出链表
Redis集合set 相关命令
集合set的性质: 唯一性,无序性,确定性
1.sadd key value1 value2
往指定key的集合中添加元素
2.smembers key
查询指定key的集合set的所有元素
3. srandmember key
随机返回指定key集合的任意元素
4.spop key [count]
返回并删除集合中key中count个随机元素
5.srem value1 value2
删除集合中集为 value1 value2的元素
返回值: 忽略不存在的元素后,真正删除掉的元素的个数
6.sismember key value
判断value是否在key集合中
是返回1,否返回0
7.scard key
查询指定key集合元素的个数
8.smove source dest value
把source中的value删除,并添加到dest集合中
9.sinter key1 key2 key3
获取 集合key1 集合key2 集合key3三个集合的交集结果
10.suion key1 key2.. Keyn
获取 集合key1 集合key2 集合key3三个集合的并集结果
11.sdiff key1 key2 key3
获取 集合key1 集合key2 集合key3三个集合的差集结果
12.sinterstore dest key1 key2 key3
求出key1 key2 key3 三个集合中的交集,并赋给dest
Redis有序集合order set命令
1.zadd key score1 value1 score2 value2 ..
添加元素,score的值是作为排序的依据
2.zrank key member
查询member的排名(升续 0名开始)
3.zrevrank key memeber
倒序排名
4.ZRANGE key start stop [WITHSCORES]
把集合排序后,按升序返回名次[start,stop]的元素,Withscores 是把score也打印出来
5.zrevrange key start stop
把集合排序后,按降序返回名次[start,stop]的元素,Withscores 是把score也打印出来
6.zrangebyscore key min max [withscores] limit offset N
集合(升续)排序后,取score在[min,max]内的元素,并跳过 offset个, 取出N个
7.zrem key value1 value2 ..
删除集合中的元素
8.zremrangebyscore key min max
按照socre来删除元素,删除score在[min,max]之间的
9.zremrangebyrank key start end
按排名删除元素,删除名次在[start,end]之间的
10.zcard key
返回元素个数
11.zcount key min max
返回[min,max] 区间内元素的数量,此min和max值指的是score。
12.zinterstore destination numkeys key1 [key2 …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]
求key1,key2的交集,key1,key2的权重分别是 weight1,weight2
聚合方法用: sum |min|max
聚合的结果,保存在dest集合内
Hash 哈希数据类型相关命令
1.hset key field value
把key中 filed域的值设为value,如果没有field域,直接添加,如果有,则覆盖原field域的值
2.hget key field
返回key中field域的值
3.hgetall key
返回key中,所有域与其值
4.hlen key
返回key中元素的数量
5.hmset key field1 value1 [field2 value2 field3 value3 ……fieldn valuen]
批量添加
6.hmget key field1 field2 fieldN
返回key中field1 field2 fieldN域的值
7.hdel key field
删除key中 field域
8.hexists key field
判断key中有没有field域,存在返回1,否咋返回0
9.hinrby key field value
是把key中的field域的值增长整型值value
10. hinrbyfloat key field value
是把key中的field域的值增长浮点值value
11.hkeys key
返回key中所有的field
12.hvals key
返回key中所有的value