Redis常用命令笔记

应用场景

  • 当做缓存,缓存未命中再访问MySQL,这样能降低读的延迟
  • 原子计数
  • 最新TopN数据
    使用list中的LTRIM latest.comments 0 5000 这样永远只保存最近的5000个ID
  • 带权值的排序
    使用sorted set, 然后ZADD命令
  • 过期时间
  • 优先级的队列系统

数据类型

  • List
  • Set
  • Sorted set
  • Hash
  • 自增原子

特点

  • 主从同步
  • 持久化

strings

struct sdshdr {
    long len;
    long free;
    char buf[];
}
  • set
set name "hello"
  • setnx
    其中nx是不存在的意思, 如果存在则设置失败
setnx name "hello"
  • setex
    如果超过10秒,get就会为空
setex name 10 "red"
  • setrange
    替换字符串
  • mset
    设置多组值
  • msetnx
    会回滚
  • getset
    返回旧值
  • mget
    获取多组数据,如果不存在返回nil
  • incr/decr
    自增,如果不存在默认为1,而且用get的时候得到的会是字符串

hashes

  • hset
hset myhash filed1 hello
  • hsetnx
    如果key不存在则创建,如果key存在则返回0(不会覆盖)
  • hmset
    设置多个filed
  • hget
hget myhash field1
  • hmget
  • hincrby
// 给指定的filed加定值
hincrby myhash field3 -8
  • hexists
//判断filed是否存在
hexists myhash filed1
  • hlen
    返回filed的数量
  • hdel
    删除指定filed,并返回1 成功
  • hkeys hvals hgetall

lists

链表结构,主要只有push和pop, 是一个双向链表,长度为2的32次方,既可以当做栈也可以当做队列
也有阻塞版本的pop
* lpush rpush

// l和r是表示左右的意思
lpush mylist "world"
lrange mylist 0 -1
  • linsert
// 在world前面加上there
linsert mylist3 before "world" "there"
  • lset
设置指定下标的值
lset mylist 0 "four"
  • lrem
// 从 key 对应 list 中删除 count 个和 value 相同的元素
// count > 0 删除count, count < 0 从尾部开始删除, count == 0删除所有
lrem mylist 2 "hello"
  • ltrim
// 只保留fromto的数据
ltrim mylist8 1 -1 // 相当于删除了第一个元素
  • lpop
    删除头部元素并返回头部元素
  • rpoplpush
    原子操作,从第一个链表取出来放到第二个链表头,并返回这个值
  • lindex
lindex mylist index  // 返回第index的位置

sets

set 是集合, hashtable实现, sorted_set是跳表
* sadd
* smemebers
获取所有元素
* srem
删除
* spop
随机返回
* sdiff
去除 a里面和b相关,把剩下的返回
比如 1 2 3 diff 3 4 5 = 1 2
* sdiffstore

// 与sdiff的区别就是会存起来
sdiffstore myset1 myset2 tomyset3
  • sinter sinterstore
    交集
  • sunion sunionstore
    并集
  • smove
smove mysetfrom mysetto three
// 把three从from移动到to
  • scard
    返回元素个数
  • sismember
    返回是否是元素
  • srandmember
    随机返回,不删除

sorted sets

排序的, 跳表+hashtable

zadd myzset 1 "one"
zadd myzset 2 "two"
zadd myzset 3 "three"
zrange myzset 0 -1 withscores // zrevrange是从大到小的顺序
// "one" "1" "two" "2" "three" "3"
  • zincrby
zincrby myset 2 "one" // 增加分数
  • zrank zrevrank
    从小到大返回 下标, 从大到小返回 下标
  • zrangebyscore
  • zcount
    返回分数score区间的个数
  • zcard
    返回集合个数
  • zscore
    返回元素的score
  • zremrangebyrank
    删除排名区间的, 下标顺序
  • zremrangebyscore
    删除score区间的元素

  • keys *
    列出所有key, 可以用字符串匹配 keys abc* 之类

  • exists
    判断key是否存在
  • del
    删除key
  • expire
    设置有效时间, 通过ttl获取有效时长
  • move
    转移数据库
select 0
set age 30
move age 1
select 1
get age
  • persist
    移除过期时间
  • randomkey
  • rename
  • type
    获取key对应的value类型
  • ping info quit ..

猜你喜欢

转载自blog.csdn.net/cq361106306/article/details/80650748