zoukankan      html  css  js  c++  java
  • redis的各大数据类型

    Redis数据类型(String,Hash,List,Set,SortedSet)

    1.String 类型

    1.1 赋值

    语法:SET key value

    1.2 取值


    语法:GET key

    1.3 设置/获取多个键值 multipart 多部分


    语法:
    mset key value[key value...]
    mget key [key...]

    1.4取值并且赋值(返回的是以前的值)


    语法:getset key value

    1.5删除


    语法:Del key

    1.6数值的增减

    1.6.1递增数值


    语法:incr key

    1.6.2增加指定的整数 步进数


    语法:incr key increament

    1.6.3递减数值


    语法:decr key

    1.6.4减少指定的整数 步进数


    语法:decrby key decreament

    1.7向尾部追加值


    语法:append key value

    1.8获取字符串长度


    语法:strlen key

    2.Hash类型

    介绍:

    假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下:
    保存、更新:
    User对象 à json(string) à redis
    如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。

    2.1赋值


    一次只能设置一次字段值
    语法:hset key field value

    一次可以设置多个字段值
    语法:hmset key field value[field value ...]

    当字段不存在时赋值,类似hset,区别在于如果字段存在,该命令不执行任何操作
    语法:hsetnx key field value

    2.2取值


    一次只能取一次字段值
    语法:hget key field

    一次可以取多个字段值
    语法:hget key field[field...]

    获取所有的字段值
    语法:hgetAll key

    2.3删除字段


    可以删除一个或者多个字段,返回值时被删除的字段个数
    语法:hdel key field[field...]

    2.4增加字段


    给整数字段值进行递增
    语法:hinsertby key field increment

    2.5判断字段是否存在


    语法:Hexists key field

    2.6只获取字段名或者字段值


    语法:
    hkeys key
    hvals key

    2.7获取字段数量


    语法:
    hlen key

    3.List类型


    介绍:
    列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
    列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

    3.1向列表两边增加元素


    语法:
    向列表左边增加元素 push 堆栈 push——>推
    lpush key value[value...]

    语法:
    向列表右边增加元素
    rpush key value[value...]

    3.2查看列表


    语法:lrange key start stop

    3.3从列表两端弹出元素


    语法:
    lpop key
    rpop key

    3.4获取列表中元素的个数


    语法:
    llen key

    3.5删除列表中指定的值


    语法:
    LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数
    lrem key count value

    3.6获取/设置指定索引的元素值

    语法:
    	获取指定索引的元素值
    	lindex key index
    

    语法:
    	设置指定索引的元素值
    	lset key index value
    

    3.7只保留列表指定片段

    语法:
    	指定范围和lrange一致
    	ltrim key start stop
    

    3.8向列表中插入元素

    语法:
    	该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。
    	linsert key Before/After point value
    

    3.9将元素从一个列表转移到另一个列表中

    语法:
    	rpoplpush source destination
    

    4Set类型

    介绍:
    	集合中的数据是不重复且没有顺序
    

    4.1增加/删除元素

    语法:
    	SADD key member[member...]
    

    语法:
    	STREM key member[member...]
    

    4.2获取集合中的所有元素

    语法:
    	smembers key
    

    4.3判断元素是否在集合中

    语法:
    	sismember key member
    

    4.4集合的差集运算

    语法:
    	属于A并且不属于B的元素构成的集合。
    	sdif key value
    

    4.5集合的交集运算

    语法:
    	属于A且属于B的元素构成的集合
    	sinter key[key...]
    

    4.6集合的并集运算

    语法:
    	属于A或者属于B的元素构成的集合
    	sunion key[key...]
    

    4.7获得集合中元素的个数

    语法:
    	scard key
    

    4.8从集合中弹出一个元素

    语法:
    	spop key
    

    5 SortedSet类型zset

    介绍:
    	在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。 
    
    在某些方面有序集合和列表类型有些相似。 
    1、二者都是有序的。 
    2、二者都可以获得某一范围的元素。 
    但是,二者有着很大区别: 
    1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。 
    2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。 
    3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现) 
    4、有序集合要比列表类型更耗内存。 
    
    

    5.1增加元素


    语法:
    向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
    zadd key score member[score member...]

    5.2获取元素的分数

    语法:
    	zscore key member
    

    5.3删除元素

    语法:
    	移除有序集key中的一个或多个成员,不存在的成员将被忽略。
    当key存在但不是有序集类型时,返回一个错误。
    	zrem key member[member...]
    

    5.4获取排名在某个范围的元素列表

    语法:
    	按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素) 
    	ZRANGE key start stop [WITHSCORES]
    

    语法:
    	按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
    	ZREVRANGE key start stop [WITHSOCRES]
    

    5.5获取指定分数范围的元素

    语法:
    	ZRANGEBYSCORE KEY MIN MAX[WITHSCORES][LIMIT offset count]
    

    5.6 增加某个元素的分数

    语法:
    	返回值是更改后的分数
    	zincrby key increment member
    

    5.7获取集合中元素的数量

    语法:
    	zcard key
    

    5.8获取指定分数范围内的元素个数

    语法:
    	zcount key min max
    

    5.9按照排名范围删除个数

    语法:
    	zremrangebyrank key start stop
    

    5.9.1按照分数范围删除元素

    语法:
    	zremrangebyscore key min max
    

    5.9.2获取元素的排名

    语法:
    	从小到大
    	 zrank key member
    

    语法:
     	从大到小
     	zrevrank key member
    

  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/xiaojiDream/p/14833412.html
Copyright © 2011-2022 走看看