一、Redis 基础:
1、通用命令:
keys [pattern]:
keys * #遍历所有key;keys he* #以'he'开头的key;
keys he[a-e]* #以‘he’开头第三个字母是a-e之间;
keys ph? #'?'代码一位,以ph开头且字母是三位的key
dbsize:计算key的总数
exists key :检查key是否存在(存在返回1,不存在返回0)
del key [key...]:删除key(返回执行成功的条数)
expire key seconds:设置key在seconds秒后过期
ttl key:查看key剩余的过期时间
persist key:去掉key的过期时间
type key :返回key的类型
2、数据结构:
二、Redis API的使用:
1、String:
set key value 设置键值对
setnx key value key不存在才设置
set key value xx key存在才设置
get key 通过key获取value
mget 批量获取,时间复杂度 o(n)
mset 批量设置,时间复杂度o(n)
getset key value 设置新值并返回旧值
append key value 在原有value上追加值
strlen key 字符长度
keys * 获取所有的key (支持通配符 :* ? [])
del key [kel...] 删除键值对
incr key 对于整数value增加1
incrby key num 对于整数value增加num
decr key 对于整数value减少1
decrby key num 对于整数value减少num
incrbyfloat key num 对于浮点数value增加num
getrange key start end 指定显示的位置
setrange key offset value 指定位置修改
2、Hash:
hset key field value 将哈希表key中的域field 的值设为value
hget key field 返回哈希表key中给定域field的值
hdel key field 删除哈希表key中的fileld的值
hgetall key 返回哈希表key中,所有的域和值
hkeys key 返回哈希表key中所有的域
hmset key field value [field value] 批量设置field-value对到哈希表key中 o(n)
hmget key field [field] 批量获取key中 field域的值 o(n)
hexists key field 判断哈希表key中是否有field
hlen key 获取哈希表key中field的数量
hvals key 返回哈希表key对应所有field的value
hsetnx key field value 设置哈希表key对应field(存在,则失败)的value
hincrby key field intCounter 哈希表key对应的field的value增加 intCounter,返回结果
hincrbyfloat key feild floatCounter 哈希表key对应的field的value增加 floatCounter,返回结果
3、List:
1、lpush key value [value...] 从列表左端插入值(1-N个)
2、rpush key value [value...] 从列表右端插入值(1-N个)
3、linsert key before|after value newValue 在列表指定的值前|后插入newValue
4、lrem key count value 根据count值,从列表中删除所有value,count大于0从左到右,小于0从右到左,等于0删除所有相等项;例如:lrem key -1 a 从右到左删除 1 个相等的项
5、ltrim key start end 按照索引范围修剪列表
6、lrange key start end 获取列表指定索引范围所有item等的项
7、llen key 返回列表key的长度
8、lpop key 将列表key最左端的元素弹出
9、rpop key 将列表key最右端的元素弹出
10、lindex key index 获取列表key指定的索引item
11、lset key index newValue 设置列表key指定索引值为newValue
12、blpop key timeout 阻塞左弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞
13、brpop 阻塞右弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞
注:根据不同的业务需求有以下建议:
1、lpush + lpop = stack (以栈的方式存取,后进先出)
2、lpush + rpop = queue (以队列的方式存取,先进先出)
3、lpush + ltrim = capped conllection (以固定长度的列表存取)
4、lpush + brpop = message queue (消息队列)
4、Set:
1、sadd key element 向集合key添加element(如果存在添加失败)
2、srem key element 将集合key中的element移除
3、scard key 计算集合大小
4、sismember key it 判断it是否在集合中
5、srandmember key count 从集合中随机挑count个元素
6、spop key 从集合中随机弹出一个元素
7、smembers key 获取集合所有元素
8、sdiff key key [key...] 获取差集
9、sinter key key [key...] 获取交集
10、sunion key key [key...] 获取并集
5、zSet:
1、zadd key score element 添加元素
2、zrem key element 删除元素
3、zscore key element 返回元素的score
4、zincrby key increScore element 增加或减少元素的score
5、zcard key 返回元素的总个数
6、zrank key element 返回元素的排名位置(升序)
7、zrange key start end withscores 返回指定索引范围的升序元素[score]
8、zrangebyscore key min max withscores 返回指定score范围的升序元素
9、zcount key min max 返回有序集合内在指定score范围内的个数
10、zremrangebyrank key start end 删除指定排名内的升序元素
11、zremrangebyscore key min max 删除指定分数内的升序元素
12、zrevrank 返回元素的排名位置(降序)
13、zrevrange 返回指定索引范围的降序元素[score]
14、zrevrangebyscore 返回指定score范围的降序元素
15、zinterstore 交集
16、zuninstore 并集