redis指令

注意:

对于redis存储的同一个区域,所有类型的key存储在一起,不能重复,在获取的时候使用对应类型的方法获取

数值类型不能超过MAX_LONG

一、String类型

方法说明
set key value设置一个string key
get key获取key值
del key删除对应的key值
mset key1 value1 key2 value...设置多个键值对
mget key1 key2获取多个值
strlen key获取值的长度
append key追加到原始值后面,如果不存在就新建

string类型的扩展操作

方法说明
incr key对于数值+1
incrby key incrment增加incrment
incrbyfloat key incrment增加指定的小数
decr
decrby

设置指定的生命周期

方法说明
setex key seconds value设置指定的生存秒数
psetex key milliseconds value毫秒数

二、hash

方法说明
hset key field value设置值
hget key field获取值
hgetall key获取该key的所有field与value
hdel key field1 [field2...]删除
hmset key field1 value1 field2 value2添加多个值
hmget key field1 field2获取
hlen key获取字段数量
hexists key field看是否存在字段

hash扩展操作

方法说明
hkeys获取keys
hvals获取value
hincrby key field incrment
hincrbyfloat key field incrment

三、list

list是双向链表

方法说明
lpush key value1 value2...左添加
rpush key value1 value2...右添加
lrange key start stop获取范围内的数据
lindex key index索引
llen key长度
lpop获取并移除
rpop
blpop key [key2] timeout没值等timeout,有直接pop
brpop key [key2] timeout

四、set

方法说明
sadd key member1 [member2]添加
smembers key获取全部数据
srem key member1 member2 ...删除
scard key获取集合数据总量
sismember key member判断是否存在
srandmember key [count]随机获取集合的数据
spop key随机获取某个并移除

set扩展操作

方法说明
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
sinterstore destination key1 [key2]求交并存储到目标
smove source destination member从原始集合中移动到目标集合

五、sorted_set

方法说明
zadd key scorel member1...添加一个或多个数据
zrange key start stop获取全部数据从小到大
zrevrange key start stop从大到小
zrem key member删除数据
zrangebyscore key min max获取值
zrevrangebyscore key max min
zremrangebyrank key start stop删除值
zremrangebyscore key min max
zcard key获取集合数量
zcount key min max
zinterstore destination numkeys key ...numkeys个集合交并操作
zunionstore destination numkeys key ...
zrank key member获取数据对应的索引(排名)
zrevrank key member
zscore key member获取score值
zincrby key increment member修改

注意:

sorted_set在进行集合的交并操作的时候还可以对score的一系列数值进行操作

六、通用操作

key的操作

方法说明
del key删除
exists key是否存在
type key获取key类型
keys pattern

key设置有效期

方法说明
expire key seconds设置有效期
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
ttl key获取有效期
pttl key
persist key设置为永久有效

注意:

ttl获取有效期的时候,如果key存在返回-1;如果key不存在返回-2;如果key在有效期返回有效期时间

key的其他操作

方法说明
rename key newkey会覆盖已存在名的值
renamenx key newkey如果改名不存在改名成功
sort排序的集合需要有数据且不改变原数据
help @generic

数据库通用操作

方法说明
select num选择数据库
move key db移动数据到指定数据库
dbsize看数据库有多少key
flushdb清理当前数据库的key
flushall有生之年不用

七、持久化技术

rdb

  • dbfilename dump.rdb
    • 说明:设置本地数据库文件名,默认值为 dump.rdlb
    • 经验:通常设置为dump-端口号.rdb
  • dir
    • 说明:设置存储.rdb文件的路径
    • 经验:通常设置成存储空间较大的目录中,目录名称data
  • rdbcompression yes
    • 说明:设置存储至本地数据库时是否压缩数据,默认为yes,采用LZF压缩
    • 经验:通常默认为开启状态,如果设置为no,可以节省 CPU 运行时间,但会使存储的文件变大(巨大)
  • rdbchecksum yes
    • 说明:设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
    • 经验:通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险
  • bgsave
    • 后台执行,但不是立即执行
  • save seconds changes
    • seconds时间内改变了changes就开始存储

rdb特殊启动形式

  • 服务器运行过程中重启

    • debug reload
  • 关闭服务器时指定保存数据

    • shutdow save

aof

AOF写数据三种策略(appendfsync)

  • always(每次)
    每次写入操作均同步到AOF文件中,数据零误差,性能较低
  • everysec(每秒)
    每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高
    在系统突然宕机的情况下丢失1秒内的数据
  • no(系统控制)
    由操作系统控制每次同步到AOF文件的周期,整体过程不可控

AOF功能开启

  • 配置
    • appendonly yes l no
    • 作用
      是否开启AOF持久化功能,默认为不开启状态
  • 配置
    • appendfsyne always l everysec l no
    • 作用
      AOF写数据策略

AOF重写方式

  • 手动重写
    bgrewriteaof

  • 自动重写

    • auto-aof-rewrite-min-size size

      大于size基础大小就开始重写

    • auto-aof-rewrite-percentage percentage

      大于这个百分比就开始重写

八、事务的基本操作

  • 开启事务

    • multi
      作用
      设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中
  • 执行事务

    • exec
      作用
      设定事务的结束位置,同时执行事务。与multi成对出现,成对使用
  • 取消事务

    • discard
      作用
      终止当前事务的定义,发生在multi之后,exec之前

注意:

如果在一系列的事务之中语句格式错误,整个事务都不能使用。

如果出现了语句格式没有问题但无法正确执行,那么只有当前语句不能执行,其他的可以正常执行

  • 对key 添加监视锁,在执行exec前如果key发生了变化,终止事务执行
    watch key1 [key2…]
  • 取消对所有 key 的监视
    unwatch

当监视的key发生了变化,所有的事务都不能执行

分布式锁(以上锁已经不适用了)

  • 使用 setnx 设置一个公共锁
    setnx lock-key value

  • 利用setnx命令的返回值特征,有值则返回设置失败,无值则返回设置成功

    • 对于返回设置成功的,拥有控制权,进行下一步的具体业务操作
    • 对于返回设置失败的,不具有控制权,排队或等待
    • 操作完毕通过del操作释放锁

注意:

这个锁只是大家公认商量好的,也就是说即便加了锁,也可以修改对于的key值。

所以每次在修改之前都需要判断当前key是否加了锁,然后再进行下一步操作。

对应锁的名称似乎也不是与你要锁的key一一对应的,都是大家提前商量好的,其实就是相当于set了一个键值对,只不过这个键值对只能设置删除,不能修改

  • 使用 expire 为锁key添加时间限定,到时不释放,放弃锁
    • expire lock-key second
    • pexpire lock-key milliseconds

九、删除策略

惰性删除

  • 数据到达过期时间,不做处理。等下次访问该数据时
    • 如果未过期,返回数据
    • 发现已过期,删除,返回不存在
  • 优点:节约CPU性能,发现必须删除的时候才删除
  • 缺点:内存压力很大,出现长期占用内存的数据

定期删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J8pdNxO7-1667734684679)(/Users/jibuzixin/Documents/typora/img/image-20221026095408132.png)]

逐出算法

相关配置

  • 最大可使用内存
    • maxmemory
      占用物理内存的比例,默认值为0,表示不限制。生产环境中根据需求设定,通常设置在50%以上。
  • 每次选取待删除数据的个数
    • maxmemory-samples
      选取数据时并不会全库扫描,导致严重的性能消耗,降低读写性能。因此采用随机获取数据的方式作为待检测删除数据
  • 删除策略
    • maxmemory-policy
      达到最大内存后的,对被挑选出来的数据进行删除的策略
    • 检测易失数据(可能会过期的数据集server.db[i].expires)
      • volatile-lru:挑选最近最少使用的数据淘汰
      • volatile-lfu:挑选最近使用次数最少的数据淘汰
      • volatile-ttl:挑选将要过期的数据淘汰
      • volatile-random:任意选择数据淘汰
    • 检测全库数据(所有数据集server.db[i].dict)
      • allkeys-lru:挑选最近最少使用的数据淘汰
      • allkeys-lfu:挑选最近使用次数最少的数据淘汰
      • allkeys-random:任意选择数据淘汰
    • 放弃数据驱逐
      • no-enviction(驱逐):禁止驱逐数据(redis4.0中默认策略),会引发错误OOM (Out Of Memory)

十、高级数据类型

Bitmaps类型的基础操作

  • 获取指定key对应偏移量上的bit值

    • getbit key offset
  • 设置指定key对应偏移量上的bit值,value只能是1或0

    • setbit key offset value
  • 对指定key按位进行交、并、非、异或操作,并将结果保存到destkey中

    • bitop Op destKey key1 [key2. . . ]
      • and:交
      • or:并
      • not:非
      • xor:异或
  • 统计指定key中1的数量

    • bitcount key [start end]

HyperLogLog类型的基本操作

  • 添加数据
    pfadd key element [element …]
  • 統计数据
    pfcount key [key …]
  • 合并数据
    pfmerge destkey sourcekey [sourcekey. …]

相关说明

  • 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
  • 核心是基数估算算法,最终数值存在一定误差
  • 误差范围:基数估计的结果是一个带有0.81%标准错误的近似值
  • 耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数
  • pfadd命令不是一次性分配12K内存使用,会随着基数的增加內存逐渐增大
  • Pfmerge命令合井后占用的存储空间为12K,无论合并之前数据量多少

GEO

  • 添加坐标点

    • geoadd key longitude latitude member [longitude latitude member…]
  • 获取坐标点

    • geopos key member [member …]
  • 计算坐标点距离

    • geodist key member1 [member2 funit]
  • 根据坐标求范围内的数据

    • georadius key longitude latitude radius m\ km\ ft \ mi
  • 根据点求范国内数据

    • georadiusbymember key member radius m\ km\ ft \ mi
  • 获取指定点对应的坐标hash值

    • geohash key member [member … ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值