zoukankan      html  css  js  c++  java
  • Redis之API使用

    一、通用命令

    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
    学习之旅
  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/15067440.html
Copyright © 2011-2022 走看看