Redis 常用 API

1. 常用命令

1. 设置键的过期时间(单位:秒)

expire key second

2. 查看键的过期时间(单位:秒)

ttl key(其中,如果是, -1:说明没有设置过期时间,-2:说明不存在该键)

3. 查看键的类型

type key

4. 查看内部编码

object encoding key

5. 键自增

incr key

6. 切换数据库

select dbIndex

7. 迁移键到别的数据库

move key db

8. 清除当前数据库

flushdb

9. 清除所有数据库

flushall

2. 数据结构

1. 五种基本的数据结构

(1)string

        内部编码 raw、int、embstr

(2)hash

        内部编码 hashtable、ziplist

(3)list

        内部编码 linkedlist、ziplist

(4)set

        内部编码 hashtable、intset

(5)zset

        内部编码 skiplist、ziplist

3. String

 可以存储简单的字符串、也可以是复杂的字符串(例如:JSON、XML)、数字(整数、浮点数)、也可以是二进制(图片、音频、视频);但是最大不能超过 512 MB。

常用命令

设置值

1. set key value [ex seconds] [px milliseconds] [nx|xx]

        ex seconds:为键设置秒级过期时间

        px milliseconds:为键设置毫秒级过期时间

        nx:键必须不存在,才可以设置成功,用于添加

        xx:与 nx 相反,键必须存在,才可以设置成功,用于更新

2. setnx key value

       setnx:可以作为分布式锁的一种实现方案

3. setex key seconds value

        setex:设置值顺便设置过期时间

4. mset k1 v1 k2 v2 k3 v3

        mset:批量设置值

5. mget k1 k2 k3

        mget:批量获取值

补充:为什么不使用单个插入,而要有批量插入,看下面时间复杂度

set = 一次网络时间 + 一次命令时间

mset = 一次网络时间 + n次命令时间

主要的是网络时间,命令时间几乎可以忽略不计,所以使用 mset 所需要的时间就是约等于一次网络时间

6. incr key

        incr:+1操作(不是整数返回错误,是整数则返回增加后的结果,键不存在,按值为0增加则返回1)

7. decr key

        decr:-1操作

8. incrby key number(按照 number 进行增加)

9. decrby key number(按照 number 进行减少)

10. incrbyfloat key number(按照 number 对 float 类型进行增加)

11. decrbyfloat key number(按照 number 对 float 类型进行减少)

12. append key value

        append:追加值

13. strlen key

        strlen:计算字符串长度

14. getset key value

        getset:返回原先的 key 对应的值,然后再进行设值

15. getrange key start end

        getrange:获取指定位置范围的值

内部编码:

1. int:8个字节的长整型

2. embstr:小于等于 39 个字节的字符串

3. raw:大于 39 个字节的字符串

4. hash

1. hset key field value

        hset:设置 hash 成员变量,key:哈希的成员属性,field value:key value

2. hmset key f1 v1 f2 v2

        hmset:同上面为 哈希 设置值,但是是批量设置

3. hget key field

        hget:获取 hash 成员变量值

4. hmget key f1 f2

        hmget:同 hget 获取哈希表的值,但是为批量获取

5. hdel key field

        hdel:删除 哈希 成员

6. hlen key

        hlen:获取哈希中有多少个成员

7. hexists key field

        hexists:查看某个成员是否存在

8. hkeys key

        hkeys:获取某个哈希的所有键

9. hvals key

        hvals:获取某个哈希的所有值

10. hgetall key

        hgetall:获取某个哈希的键值

11. hincrby key field

        hincrby:对某个哈希的属性加 1

12. hincrbyfloat key field

        hincrbyfloat:对某个哈希的 float 属性加1

13. hstrlen key field

        hstrlen:计算某个哈希的成员长度

内部编码:

1. ziplist:当哈希类型元素个数小于 hash-max-ziplist-entries 配置(默认512个),同时所有值都小于 hash-max-ziplist-value 配置(默认64字节)时,Redis会使用 ziplist 作为哈希的内部实现,ziplist 使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比 hashtable 更加优秀

2. hashtable:当哈希类型无法满足 ziplist 的条件时,Redis 会使用 hashtable 作为哈希的内部实现,因为此时 ziplist 的读写效率会下降,而hashtable 的读写时间复杂度为 O(1)。

5. list

1. rpush key v1 v2 v3 ...

        rpush:向列表右边添加元素

2. lrange key start end

        lrange:获取范围元素

3. lpush key v1 v2 v3 ...

        lpush:向列表左边添加元素

4. linsert key before|after  old_value value

        linsert:找到等于old_value的值在其前或者后添加元素

5. lindex key index

        lindex:通过索引获取元素

6. llen key

        llen:获取列表长度

7. lpop key

        lpop:从列表左侧弹出元素

8. rpop key

        rpop:从列表右侧弹出元素

9. lrem key count value

        说明:

        1. count > 0,从左到右删除 count 个元素

        2. count < 0 ,从右到左删除 -count 个元素

        3. count = 0,删除所有元素

10. ltrim key start end

        ltrim:删除范围元素

11. lset key index newValue

        lset:修改指定下标的值

内部编码:

1. ziplist:当列表的元素个数小于 list-max-ziplist-entries 配置(默认512个),同时所有值都小于 list-max-ziplist-value 配置(默认64字节)时,Redis会使用 ziplist 作为列表的内部实现

2. linkedlist:当列表类型无法满足 ziplist 的条件时,Redis 会使用 linkedlist 作为列表的内部实现

6. 集合

1. sadd key e1 e2...

        sadd:添加不重复元素

2. srem key e1 e2

        srem:删除元素

3. scard key

        scard:计算元素个数

4. sismember key element

        sismember:计算元素是否在集合中

5. srandmember key count       

        srandmember:随机从集合从返回 count 个元素

6. spop key

        spop:从集合随机弹出元素

7. smembers myset

        smembers:获取 myset 集合中所有元素

8. sinter s1 s2

        sinter:求集合中存在的元素交集

9. suinon s1 s2

        suinon:求集合中元素的并集

10. sdiff s1 s2

        sdiff:求多个集合的差集

内部编码:

1. intset:当集合中的元素都是整数且元素个数小于 set-max-intset-entries 配置(默认512个)时,Redis会选用 intset 来作为集合的内部实现,从而减少内存的使用。

2. hashtable:当即和类型无法满足 intset 的条件时,Redis 会使用 hashtable 作为集合的内部实现

7. 慢查询

1. 获取慢查询日志条数

slowlog get

2. 获取慢查询日志列表空间大小

slowlog len

3. 慢查询日志重置

slowlog reset

8. 事务

1. 开启事务

multi

2. 执行事务(提交)

exec

3. 停止事务

discard

说明:

当命令错误时会导致事务失败,但是可以添加进队列

例如:

1. set age string

2. incr age

添加队列成功,但是执行失败(因为 age 为字符串)

9. bitmaps

1. 设置值

setbit key offset value

setbit key 0 1

setbit key 1 1

2. 获取值

getbit key offset

3. 获取指定范围的值

bitcount start end

你可能感兴趣的:(java)