redis学习笔记

来源:互联网 发布:java序列化 编辑:程序博客网 时间:2024/06/16 11:45

redis的数据类型

五种数据类型

1.字符串类型

    一个键最多存储512MB

   1》SET :设置key对应的值为value

  语法:SET key value [EX seconds][PX milliseconds][NX|XX]

EX seconds:设置键的key的过期时间SET key value EX seconds  == SETEX

PX millseconds:以毫秒设置key的过期时间SET key value PX milliseconds ==PSETXT

NX:只有键不存在的时候才可以设置成功SET key value NX ==SETNX

XX:只有键存在的时候才设置

SET test17 "this is a test16" EX 100

SET test18 "this is a test18" PX 


SET test19 "" EX 100 NX(组合)

  注意:如果key存在,同名会产生覆盖,PX和EX同时存在的时候,后面的值会覆盖前面的值

  2》GET:根据key找到对应的值

语法:GET key

注意:如果key不存在,返回nil

       如果key不是字符串,会报错

  3》GETRANGE:返回字符串中的一部分

    语法:GETRANGE key start end

    start和end和python一样支持负数,但是不同点是包含end

  4》GETSET:设置指定key的值,并且返回旧的值

     语法:GETSET key value

     注意当key不存在返回nil

          如果key不实字符串,会报错

 5》MSET

语法:MSET key value [key value...]

 6》MGET

   语法: MGET key1 key2

 7》STRLEN:获取字符串长度 

语法:STRLEN key

注意:对于不存在的key获取其长度返回的0

 8》SETRANGE:相当于字符串替换的效果

语法:SETRANGE key offset value

注意:如果设置的key原来的字符串要比偏移量小,就会以零子节(\x00)来替换

 9》 GETRANGE:返回字符串中的一部分

  语法:GETRANGE key start end

10》 SETNX:只有key不存在的时候才能设置成功感

  语法:SETNX key value

11》SETEX:设置key并且设置其过期时间

语法:SETEX key seconds value

注意:过期时间以秒为单位可以使用TTL key 查看键过期时间,SETEX是原子性操作,相当于执行了set key value ,又对这个key设置了过期时间expire key seconds

SETEX expireStr 69 'testExpire'

12》MSETNX:依次设置多个key-value对,只有所有的key都不存在的时候才会成功

语法:MSETNX key value [key value]

13》PSEXEX:以毫秒为单位设置key的生存周期

语法:PSETEX key milliseconds value

PSETEX test16 2000 ‘hello world’


注意:通过PTTL查看key的剩余时间

14》INCR:对key中存储的数字+1

语法:INCR key 

SET counter 1

INCR counter

注意:key如果不存在,则会先初始化为0,然后接着计数

       如果key存储的不是数字,会报错

15》INCR BY:将key中存储的数字加上制定增量

SET counter2 10

INCR BY counter2 5

16》INCRBYFLOAT:给key中存储的数字加上指定的浮点数

语法:INCREBYFLOAT key increment

SET counter3 1

INCRBYFLOAT counter3 1.2

 16》DECR :将key中存储的数字减1

语法:DECR key

DECR counter3

17》DECRBY:将key中存储的数值减去指定的值

DECRBY key decrement

DECRBY counter2 2



18》APPEND:可以通过APPEND将值追加到字符串的末尾

语法:APPEND key value

注意:如果key不存在,则相当于SET操作



2.HASH类型

特别适用于存储对象,hash存储一个对象占用内存更少

    在配置文件中可以通过配置

   hash-max-ziplist-entries 512 512字节

  hash-max-ziplist-value   64 字段数目

1》HSET:将哈希表key中域field设置成指定的value

    语法:HSET key field value

    HSET userinfo1 username "king"

    HSET userinfo1 password "123456"

    HSET userinfo1 email "sadadad@qq.com"

注意:如果哈希表中key中field不存在,相当于新建一个field,设置返回成功1

        如果哈希表中key中field存在,相当于重新赋值,成功返回0

2》HGET:返回哈希表中key中给定field的值

语法:HGET key field

注意:如果key中field不存在,返回的是nil

3》HSETNX:将hash表中的域field设置成指定呃值,只有field不存在的时候才可以成功

如果filed存在,则操作无效

语法:HSETNX key field value

HSETNX testHash1 test ‘a’

4》HMSET:通过将多个field-value设置到hash表key中

语法:HMSET key field value field value

5》HMGET:一次获得hash表中key中多个field的值

语法:HMGET key field field

注意:如果hash表key中field不存在,会返回nil

6)HGETALL:返回hash表key中所有的field和value

语法:HGETALL key

HGETALL userInfo2

7》HKEYS:返回hash中key的所有的field

语法:HKEYS key

HKEYS userinfo2

8》HVALS:返回hash中key中国field所有的对应的值

语法:HVALS key

9》HEXISTS:检测hash中field是否存在

语法:HEXISTS key filed

10》HLEN:返回hash表key中field的数量

语法:HLEN key

HLEN userinfo2

11》HINCRBY:给hash中key的filed做增量操作

语法:HINCRBY key field increment

HSET userInfo3 age 12

HINCRBY userinfo3 age 10

12》HINCRBYFLOAT:给hash中key的field做增量浮点操作

语法:HINTCRBYFLOAT key field increment

HSET userInfo3 salary

13》HDEL:删除hash中key的指定域,可以删除一个也可以删除多个

语法:HDEL key field field

HGETALL userinfo2

HDEL userinfo2 username password







3.List类型

  1》LPUSH:向列表左端添加元素

  语法:LPUSH key value value...

   LPUSH testList1 a b c

   LPUSH myList1 0 -1

  2》RPUSH:向列表右端添加元素

语法:RPUSH key value value...

RPUSH myList1 test1 test2 test3

3》LPUSHX:向列表头头部添加元素,只有key存在在来添加

      语法:LPUSHX key value

       LPUSHX myList2 a

4》RPUSHX:向列表尾部添加元素,只有key存在在来添加

语法:PRUSHX key value

5》LPOP:将列表头部的元素弹出

语法:LPOP key

6》RPOP:弹出列表尾部的元素

语法:RPOP key

RPOP myList1

7》LLEN:得到列表的长度

语法:LLEN key

LLEN myList2

8》LRANGE:返回获取列表片段

语法:LRANGE key start stop

LRANGE myList 0 -1

注意:

如果start下标比列表的最大下标end大,返回空列表

如果stop比列表长度大,返回整个列表

9》LREM:删除列表中指定的值

语法:LREM key count value

count 值有一下几种:

count>0:从列表的头开始,向胃部搜索,移除与value

相等的元素,移除count个

count<0:从列表尾部向头搜索,移除与value

相等的元素,移除count个

count=0,移除列表中所有与value相等的值

LPUSH myList2 a b c d 

10》LINDEX:获取指定索引元素的值

语法:LINDEX key index

11》LSET:设置指定索引元素的值

LINDEX myList2 -3

LINDEX myList2 1000

12》LSET:设置指定索引元素的值

语法:LSET key index value

LSET myList2 0 king

12》LTRIM:只保留列表的片段

语法:LTRIM key start stop

LPUSH myList3 log1 log2 log3 log4 log5

LTRIM myList3 0 1 

LTRIM myList4 1000 2000 列表被清空

LTRIM myList4 2000 1000 列表被清空

13》LINSERT :向列表插入元素

语法:LINSERT key BEFORE|AFTER pivot value

LPUSH myList5 a b c d 

LINSERT myList5 BEFORE 'b' 'king'

LRANGE myList5 0 -1

LINSERT myList5 before b queen

14》RPOPPUSH:将元素从一个列表转到另外一个列表

过程属于一个原子性操作,源列表和目的列表是同一个列表时

语法:RPOPLPUSH source destination

LPUSH myList6 a b c

LPUSH myList7 x y z

RPOPLPUSH myList6 myList7

15》 BLPOP:BLPOP时LPOP的阻塞版本

语法:BLPOP key[key...] timeout


4.Set集合类型:无序集合

  内部通过hash表实现,自动调整大小。

  1》SADD:向集合中添加元素

 语法:SADD key member

2》SMEMBERS:返回指定集合中的元素

SMEMBERS web

3》SISMEMBER:检测value是否时集合中的成员

语法:SISMEMBER key value

4》SREM:删除集合中的一个或者多个成员

语法:SREM key member 

5》SPOP:删除并返回集合中的随机元素

语法:SPOP key

6》SRANDMEMBER:随机返回集合中的元素

SRANDMEMBER key count

注意:

count为正数,而且小于集合中的元素,返回一个包含随机元素的集合数组:

count数大于集合中元素的个数,count为负数,返回一个数组,数组中的成员可能出现重复

数组的长度时count取绝对值

7》SDIFF:返回集合间的差集

语法:SDIFF key key ...

8》SINTER:返回集合间的交集

语法:SINTER key key...

SINTER testSet1 testSet2

9》SUNION:返回集合中并集操作

语法:SUNION key key...

SUNION testSet1 testSet2

10》SCARD:返回集合中元素个数

语法:SCARD key

11》SDIFFSTORE:将差集结果保存到指定集合中

语法SDIFFSTORE destination key key 

12》SINTERSTOREL:将交集的结果保存在指定集合中

语法:SINTERSTORE destination key key ..

13》SUNIONSTORE:将并集的结果保存到指定结合中

语法:SUNIONSTORE destination key key...

14》SMOVE :将集合中的元素移动到另外一个集合中

语法:SMOVE source destiantion member

注意:原子性操作


5.Zset有序集合类型

1》ZADD:将元素及其分数添加到集合中,返回新增加成员个数

语法:ZADD key score member 

ZADD PHPScore 100 king

2》ZSCORE:获得指定元素的分数

语法:ZSCORE key member

ZSCORE PHPScore maizi

ZADD PHPSocre +inf maxInt -inf minInx

3》ZRANGE:按照元素分数从小到达的顺序返回指定start 到stop之间的所有元素(包含两端)

语法:ZRANGE key start stop[WITHSCORES]

ZRANGE PHPScore 0 -1 (可以添加WITHSCORES)

ZRANGE PHPSCore 0 2000 WITHSCORES

ZADD PHPScore 60  test6 60 test7

ZRANGE PHPScore 0 -1 

注意:当两个元素的分数相同的时候,redis在排序的时候按照字典的顺序(0<9<A<Z<a<z)

如果使用的事utf-8的编码方式的中文按照字典顺序排列

4》ZREVRANGE:和ZRANGE相反,按照分数从大到小的顺序

语法:ZREVRANGE key start stop [WITHSCORES]

5》ZRANGEBYSCORE:获得指定分数范围内的元素,也是按照分数从小到大的顺序,返回的是分数在指定的

 min到max的元素

语法:ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count]

#获得分数80-90之间的所有元素

ZRANGEBYSCORE PHPScore 80 90(在数字前面加(表示不包含起始点)

ZRANGEBYSCORE PHPSocre 90 +inf WITHSCORES

6》ZREVRANGEBYSCORE :获得指定分数范围内的元素,按照元素的分数从大到小的顺序

返回min max之间的元素

语法:ZREVRANGESCORE key min max [WITHSCORES] [LIMIT offset count]

7》ZINCYBY:操作某个元素的分数,返回增加之后的分数

语法:ZINCYBY key increment member

ZINCRBY PHPScore 5 test16

8》ZCARD:获得集合中元素的数量

语法:ZCARD key

9》ZCOUNT:获得指定分数內的元素数量

语法:ZCOUNT key min max

ZCOUNT PHPSCore 80 90

10》ZREM:删除一个或多个元素,返回删除元素的个数

语法:ZREM key member...

ZREM PHPScore test16

11》ZREMRANGEBYRANK:按照排名范围删除元素,按照分数从小到达的顺序删除置顶的范围内的所有元素

ZADD testRem 1 a 2 b 3 c 4 d 5 e 6f

12》ZREMRANGEBYSCORE:按照分数范围删除元素

语法:ZREMRANGEBYSCORE key min max

13》ZRANK:指定指定元素的排名,根据分数从小到大的顺序

语法:ZRANK key member

ZRANK PHPSCore maizu

14》ZREVRANK:获得指定元素的排名,根据分数从大到小的顺序

语法:ZREVRANK key member

15》ZINTERSTORE:计算有序集合的交集,并将结果保存起来

语法:ZINTERSTORE destination numkeys [WEIGHTS weight weight...][AGGREGATE SUM|MIN|MAX]

ZINTERSTORE resTestSorted1 2

16》ZUNIONSTORE :计算有序集合并集,将结果保存起来

 ZUNIONSTORE destination numkeys key key ...[WEIGHTS weight weight...][AGGREGATE SUM|MIN|MAX]










6.Key相关的命令

1》KEYS:返回所有符合给定模式的key

*:匹配任意个字符

?:匹配一个任意字符

[]:匹配[]之间的一个字符,[b-e],a[b-e] ab ac ad ae

\x:匹配特殊字符\?\*

MSET one 1 two 2 three 3 four 4 five 5 six 6 seven 7

KEYS  *

KEYS *o*

KEYS  ?o*

KEYS c[n-z]*

2》EXISTS:检测指定key是否存在

语法:EXISTS key

EXISTS one

3》TYPE:返回key所存储的类型

语法:TYPE key

不存在的key,返回none

string

hash

set

zset

list

TYPE testStr11

TYPE userInfo2

4》EXPIRE:设置key的过期时间

语法:EXPIRE key seconds

SET cache_page 'http://phpfamily.org'

EXPIRE cache_page 100

注意:如果key以及存在过期时间,在通过EXPIRE设置的时候会覆盖之前过期时间

5》EXPIREAT:需要指定在指定时间戳过期

语法:EXPIREAT key timstamp

SET cache_page "http://maiziedu.com"

EXPIREAT cache_page1 

6》PEXPIRE:以毫秒的形式指定过期时间

语法:PEXPIRE key milliseconds

SET cache_page2 ""

PEXPIRE cache2_page2 50000

7》PEXPIREAT:指定时间戳,单位为毫秒

语法:PEXPIREAT key timestamp

SET cache_page3 'http://phpfamily.org'

PEXPIREAT cache_page 

8》TTL:以秒为单位返回key剩余时间

语法:TTL key

注意:如果key没有设置过期时间,返回-1

如果key不存在返回-2

SET cache_page4 "http://www.baidu.com"

TTL cache_page5

EXPIRE cache_page5

9》PTTL:以毫秒为单位返回key的剩余时间

语法:PTTL key

10》PERSIST:将一个带有过期时间的key转变成永久的key

语法:PERSIST key

SET cache 'testCache'

EXPIRE cache 100

TTL cache

PERSIST cache

11》DEL:删除指定的KEY

语法:DEL key ...

12》RANDOMKEY:随机的从当前数据库中返回一个key

13》RENAME:重命名一个键

语法:RENAME key newkey

SET testRename1 'rename1'

RENAME testRename1 testRename2

RENAME testRename2 testRename2 

注意:如果名称没有发生改变会报错

14》RENAMENX:如果这个新名称不存在才会生效

语法:RENAMENX key newkey

15》DUMP:序列化给定的key,返回序列化之后的值

语法:DUMP key

SET testDump 'this is a test'

DUMP testDump

16》RESTORE:反序列化

语法:RESTORE key tt1 value

17》MOVE:将当前数据库中的key移动到另外的数据库中

语法:MOVE key bdId

SELECT 0

SET testMove ‘aaa’

MOVE testMove 1

注意:当移动一个key到另外一个数据库中已经存在的key,则不会移动

           当移动一个不存在的key会失败

           当目录数据库中存在同名key的时候移动失败


OBJECT 、MIGRATE、SCAN,SORT







原创粉丝点击