您的位置:首页 > 数据库 > Redis

Redis之API使用

2021-07-27 18:51 806 查看

一、通用命令

**keys:**keys命令一般不在生产环境中使用,生产环境key很多,时间复杂度为o(n),用scan命令

keys * 			# 打印出所有key

keys he*		# 打印出所有以he开头的key

keys he[h-l]	# 打印出所有以he开头,第三个字母是h到l的范围

keys he?	   # 三位长度,以he开头,?表示任意一位

dbsize: 计算key的总数

dbsize 		# redis内置了计数器,插入删除值该计数器会更改,所以可以在生产环境使用,时间复杂度是o(1)

**exists key:**key存在返回1 不存在返回0

set name xiaoyang	# 设置name

exists name			# 查看name是否存在
(integer) 1

**del key:**删除成功返回1,key 不存在返回0

**expire key seconds:**设置过期时间

**ttl key:**查看 key 还有多久过期

**persist key:**去除 key 的过期时间

**type name:**查看 key 的类型

二、字符串类型

字符串 value 不能大于512m,一般建议 100k 以内

结构:

key          value
hello        world      可以很复杂,如json格式字符串
counter      1          数字类型
bits         10101010   二进制(位图)

常用命令

基本使用

get,set,del

set name xiaoyang   # 设置name
get name       		# 获取name
del name       		# 删除name

其他使用

incr,decr,incrby,decrby

incr age  		# 对age这个key的value值自增1
decr age  		# 对age这个key的value值自减1
incrby age 10  	# 对age这个key的value值增加10
decrby age 10  	# 对age这个key的value值减10

set,setnx,setxx

set name xiaoyang  		# 不管key是否存在,都设置
setnx name xiaoyang		# key不存在时才设置(新增操作)
set name xiaoyang nx 	# 同上
set name xiaoyang xx 	# key存在,才设置(更新操作)

mget,mset

mget key1 key2 key3     # 批量获取key1,key2.。。
mset key1 value1 key2 value2 key3 value3    # 批量设置

"""
n次get和mget的区别
n次get时间=n次命令时间+n次网络时间
mget时间=1次网络时间+n次命令时间
"""

getset,append,strlen

getset name ys 		# 设置新值并返回旧值
append name 666 	# 将value追加到旧的value
strlen name  		# 计算字符串长度(注意中文)

incrybyfloat,getrange,setrange

increbyfloat age 3.5  		#为age自增3.5,传负值表示自减
getrange key start end 		#获取字符串制定下标所有的值
setrange key index value 	#从指定index开始设置value值

三、哈希类型

结构:

name1 ——————>{ key1: value1, key2: value2, ...}
name2 ——————>{ key1: value1, key2: value2, ...}

重要API

hget,hset,hdel

hget key field  		# 获取hash key对应的field的value
hset key field value 	# 设置hash key对应的field的value值
hdel key field 			# 删除hash key对应的field的值

hexists,hlen

hexists key field  	# 判断hash key 是否存在field
hlen key   			# 获取hash key field的数量

hmget,hmset

hmget key field1 field2 ...fieldN  		# 批量获取hash key 的一批field对应的值
hmset key field1 value1 field2 value2  	# 批量设置hash key的一批field value

hgetall,hvals,hkeys

hgetall key  	# 返回hash key 对应的所有field和value(小心使用)
hvals key   	# 返回hash key 对应的所有field的value
hkeys key   	# 返回hash key对应的所有field

其他操作

hsetnx,hincrby,hincrbyfloat

hsetnx key field value 				# 设置hash key对应field的value(如果field已存在,则失败)
hincrby key field intCounter 		# hash key 对英的field的value自增intCounter
hincrbyfloat key field floatCounter # hincrby 浮点数

四、列表类型

列表特点:

有序队列,可以从左侧添加,右侧添加,可以重复,可以从左右两边弹出

结构:

key————>value1,value2,...

插入操作

**rpush:**从右侧插入

**lpush:**从左侧插入

lpush key value1 value2 ...

**linsert:**从指定地方插入

linsert key before|after value newValue   # 从元素value的前或后插入newValue

linsert listkey before b python

删除操作

**lpop key:**从列表左侧弹出一个 item

**rpop key:**从列表右侧弹出一个 item

**lrem key count value:**根据 count 值,从列表中删除所有 value 相同的项

lrem listkey 0 name 		# 删除列表中所有值name
lrem listkey -1 age 		# 从右侧删除1个age

ltrim key start end: 按照索引范围修剪列表

ltrim listkey 1 4 		# 只保留下表1--4的元素

查询操作

lrange key start end: 包含 end 获取列表指定索引范围所有 item

lrange listkey 1 -1 	# 获取第一个位置到倒数第一个位置的元素

lindex key index: 获取列表指定索引的 item

lindex listkey 0 		# 获取第一个位置的元素

**llen key:**获取列表长度

修改操作

**lset key index newValue:**设置列表指定索引值为 newValue

lset listkey 2 xiaoyang 		# 把第二个位置设为xiaoyang

五、集合类型

特点:

无序,无重复,集合间操作(交叉并补)

API操作

sadd key element 	# 向集合key添加element(如果element存在,添加失败)

srem key element 	# 从集合中的element移除掉

scard key 			# 计算集合大小

sismember key element 	# 判断element是否在集合中

srandmember key count 	# 从集合中随机取出count个元素,不会破坏集合中的元素

spop key 			# 从集合中随机弹出一个元素

smembers key 		# 获取集合中所有元素 ,无序,小心使用,会阻塞住

sdiff user:1:follow user:2:follow  	 	# 计算user:1:follow和user:2:follow的差集

sinter user:1:follow user:2:follow   	# 计算user:1:follow和user:2:follow的交集

sunion user:1:follow user:2:follow  	# 计算user:1:follow和user:2:follow的并集

sdiff|sinter|suion + store destkey... 	# 将差集,交集,并集结果保存在destkey集合中

六、有序集合类型

特点:

有一个分值字段来保证顺序

key                  score                value
user:ranking           1                   小杨
user:ranking           99                  鲍勃
user:ranking           88                  艾伦

集合、有序集合、列表

集合:无重复元素,无序
有序集合:无重复元素,有序,需要分值字段(score)
列表:可以重复,有序

API使用

zadd key score element 		# score可以重复,可以多个同时添加,element不能重复

zrem key element 			# 删除元素,可以多个同时删除

zscore key element 			# 获取元素的分数

zincrby key increScore element 	# 增加或减少元素的分数

zcard key 					# 返回元素总个数

zrank key element 			# 返回element元素的排名(从小到大排)

zrange key 0 -1 			# 返回排名,不带分数
zrange player:rank 0 -1 withscores 	# 返回排名,带分数

zrangebyscore key minScore maxScore # 返回指定分数范围内的升序元素

zrangebyscore user:1:ranking 90 210 withscores 	# 获取90分到210分的元素

zcount key minScore maxScore 			# 返回有序集合内在指定分数范围内的个数

zremrangebyrank key start end 			# 删除指定排名内的升序元素
zremrangebyrank user:1:rangking 1 2 	# 删除升序排名中1到2的元素

zremrangebyscore key minScore maxScore 	# 删除指定分数内的升序元素
zremrangebyscore user:1:ranking 90 210  # 删除分数90到210之间的元素

基本操作 | 操作类型 | 命令 | | -------- | ------------------------------------------------- | | 基本操作 | zadd/ zrem/ zcard/ zincrby/ zscore | | 范围操作 | zrange/ zrangebyscore/ zcount/ zremrangebyrank | | 集合操作 | zunionstore/ zinterstore | | |

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: