• 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
    学习之旅
  • 相关阅读:
    3.17爸爸要回去了(之十一)
    爸爸丢了 (2013.3.10,确诊五天后,之十)
    Polyline转Polygon
    将一个应用程序添加做成windows服务
    找个输入IPoint在某个FeatureClass上距离最近的要素
    线程间操作无效: 从不是创建控件“label4”的线程访问它。
    删除文件夹下的文件和文件夹
    int组成时间值
    CRONTAB
    NFS
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/15067440.html
Copyright © 2020-2023  润新知