Redis基础

基础数据结构

  • REDIS_ENCODING_INT(long类型的整数)

  • REDIS_ENCODING_EMBSTR embstr (编码的简单动态字符串) < 44字节使用

  • REDIS_ENCODING_RAW (简单动态字符串)

  • REDIS_ENCODING_HT (字典)

  • REDIS_ENCODING_LINKEDLIST (双端链表)

  • REDIS_ENCODING_ZIPLIST (压缩列表)

  • REDIS_ENCODING_INTSET (整数集合)

  • REDIS_ENCODING_SKIPLIST (跳跃表和字典)

  • string: raw int embstr

  • hash: hashTable zipList

  • list: linkedList zipList

  • set: hashTable intset

  • zset: skiplist ziplist

各种类型的常用命令

官网指令查询

连接

远程连接时,redis配置文件,需要将bind修改为指定的ip才能连接

redis-cli -h 138.138.138.138 -p 6379 -a password

通用指令

keys 不建议生产环境使用 O(n)

keys * 查出所有key
keys test? 查出所有test开头的5位字符,?表示一个字符
keys test* 查出test开头所有key

实际生产环节中可以使用。查询指定数量的key
SCAN 0 MATCH scxx* COUNT 200

dbsize 查询所有数据总数

exists key 判断key是否存在
return: 0 1

del key 删除某个key,可以一次性删除说个
return: 0 成功删除key的数量

expire key seconds 设置过期时间

ttl key 查询key剩余的过期时间
return: -1:没有过期时间 -2:key不存在

persist key 去掉过期时间

type key 判断key的类型
return: string,hash,list,zet,szet,none

string

get set del

incr decr 自增减1

incrby decrby 自增减自定义数字

setnx key不存在才设置

setxx key存在才设置

mset mget 批量操作

append 添加字符串 return: 新的字符串长度

strlen 字符串长度

getrange key start end 获取指定的字符串,下标从0开始

setrange key offset value 修改指定下标后的所有字符串

hash

hget hset hdel

hset key filed value

hgetall 获取的所有和filed和value

hexists 判断某个filed是否存在

hlen 获取filed的数量

hmget hmset 批量操作

hsetnx 存在则新增数据

hincrby 增加自定义数字(没有自定义减)

list: 有序,可以重复,左右两边弹出

lpush rpush 左边插入,右边插入

key value1 value2 value3 value4

lpop rpop 左边弹出数据,右边弹出数据

linsert 在list指定的值前后插入newValue

linsert key before|after value newValue

lrem 删除数据

lrem key count value
注意count的值的特性:

  1. count > 0 : 从头到尾删除count个等于value的值
  2. count < 0 :从尾到头删除count个等于value的值
  3. count = 0 :删除所有等于vlaue的值

ltrim 修剪数组,保留指定的部分
ltrim key start end 注意负数,
0:表示第一个数据 -1:表示倒数第一个数据 -2:表示倒数第二个数据…

lrange key start end 范围查询 闭区间

lindex key index 根据下标取数据

llen key 获取列表的长度

lset key index newValue 设置指定下标的数据

blpop brpop 阻塞版本

set 集合 不可以重复

sadd 添加元素,可添加多个元素

srem 删除数据,可删除多个元素

scard 获取集合的大小

sinter sdiff sunion 获取集合的交集、差集、并集

sismember 判断元素是否在集合中

srandmember 随机挑选指定数量的元素

spop 随机弹出一个元素

smembers 取出集合中的所有元素

zset 有序集合 , 有序,score可以重复,member不可以重复

zadd 添加元素

zadd key score member score elment …

zrem 删除指定的元素
zrem key member …

zcard 获取集合的大小

zscore key member 获取指定member的分数

zincrby key num member 增加某个member的分数

zrank key member 获取排名(从0开始)

zrevrank key member 获取指定元素的排序(从高到低排序)

zrange key strat end 获取排名内的数据

zrevrange 根据排名内的数据(从高到低)

zrangebyscore 获取指定分数之间的数据
zrangebyscore key minScore maxScore

zrevrangebyscore 获取制定分数之间的数据,从高到低排名

zcount 获取指定分数范围的个数
zcount key minScore maxScore

zremrangebyrank 根据排名来删除数据
zremrangebyrank key start end

zremrangebyscore 删除指定分数内的数据
zremrangebyscore key minScore maxScore

zinterscore zunionscore 集合操作。 获取集交集,并集