zoukankan      html  css  js  c++  java
  • @Redis中的数据类型

    Redis支持5种数据类型:String,Hash,List,Set,ZSet,这些类型是指value的类型(key--value)

    1.String类型(key-value)

    Redis中的字符串是一个字节序列,并且是二进制安全的,比如序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等等~字符串值的最大长度为512MB

    set和get方法:

    设置值:set key value  取值:get key(说明 设置key多次会覆盖)  删除值:del key

    使用setnx(not exist)

    key如果不存在就进行设置,如果存在就不进行设置了,返回0

    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> setnx name lisi
    (integer) 0
    127.0.0.1:6379> 

    使用setex(expired)

    setex color 10 red设置color的有效期为10秒,10秒后返回nil(在Redis中nil表示空)

    使用setrange替换字符串:

    set email 1048158229@qq.com

    setrange email 10 ww (10表示从第几位开始替换,后面跟上替换的字符串,从0开始)

    127.0.0.1:6379> set email 1048158229@qq.com
    OK
    127.0.0.1:6379> setrange email 10 ww
    (integer) 17
    127.0.0.1:6379> get email
    "1048158229wwq.com"
    127.0.0.1:6379> 

    使用一次性设置多个和获取多个值得mset,mget方法

    mset key1 value1 key2 value2 key3 value3

    对应的mget key1 key2 key3

    127.0.0.1:6379> mset name zhangsan age 20 sex 0
    OK
    127.0.0.1:6379> mget name age sex
    1) "zhangsan"
    2) "20"
    3) "0"
    127.0.0.1:6379> 

    一次性设置和取值的getset

    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> getset name lisi
    "zhangsan"
    127.0.0.1:6379> 

    返回旧值并设置新值

    incr和decr方法:对某一个值进行递增和递减(incr/decr key)

    incrby和decrby方法:对某个值进行指定长度的递增和递减(incrby/decrby key 步长)

    append[name]方法:字符串追加方法(append key 'str')

    strlen[name]方法:获取字符串的长度(strlen key)

    2.Hash类型(key--(key,value),(key,value)就是hash)

    Hash类型是是字符串字段和字符串值之间的映射,或者说一个String集合。它特别适合存储对象,相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。

    形如:hset myhash key value(含义是hset是hash集合,myhash是集合名字,key是字段名,value是其值),使用hget myhash key获取内容,也可以存储多个值。

    hmset可以进行批量存储多个键值对,hmset myhash key1 value1 key2 value2,也可以使用hmget进行批量获取多个键值对。

    同样也有hsetnx,和setnx大同小异。

    hincrby和hdecrby集合递增和递减

    hexists是否存在key,如果存在就返回,不存在就返回0

    hlen返回hash集合里的所有的键数值

    hdel删除指定hash的key

    hkeys返回hash里的所有字段

    hvals返回hash里的所有value

    hgetall返回hash里所有的key和value

    3.List类型(key--(str1,str2...))

    List类型是一个字符串列表的集合,其主要功能是push,pop,获取元素等。更详细的说,List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或尾部添加删除元素,list的设计非常简单精巧,既可以作为栈,又可以作为队列,满足绝大多数需求。

    lpush方法:从头部加入元素(栈),先进后出

    形如:

    127.0.0.1:6379> lpush list1 'hello'
    (integer) 1
    127.0.0.1:6379> lpush list1 'world'
    (integer) 2
    127.0.0.1:6379> lpush list1 'welcome'
    (integer) 3
    127.0.0.1:6379> lrange list1 0 -1
    1) "welcome"
    2) "world"
    3) "hello"
    127.0.0.1:6379> 

    (0 -1表示从头取到末尾)

    rpush方法:从尾部加入元素(队列),先进先出

    形如:

    127.0.0.1:6379> rpush list2 'hello'
    (integer) 1
    127.0.0.1:6379> rpush list2 'world'
    (integer) 2
    127.0.0.1:6379> rpush list2 'welcome'
    (integer) 3
    127.0.0.1:6379> lrange list2 0 -1
    1) "hello"
    2) "world"
    3) "welcome"
    127.0.0.1:6379> 

    lpop方法:从list的头部删除元素,并返回删除元素

    rpop方法:从list的尾部删除元素,并返回删除元素

    127.0.0.1:6379> lpop list2
    "hello"
    127.0.0.1:6379> rpop list2
    "welcome"
    127.0.0.1:6379> 

    Redis中的队列可以充当MQ

    4.Set类型和ZSet类型(key--set)

    set集合是String类型的无序集合,set是通过hashtable实现的,对集合我们可以取交集,并集,差集等

    sadd方法:向名称为key的set中添加元素

    小结:set集合不允许重复元素,smembers查看set集合的元素

    srem方法:删除set集合中的元素

    spop方法:随机返回删除的key

    sdiff方法:返回两个集合的不同元素,哪个集合在前面就以哪个集合为标准

    sdiffstore方法:将返回的不同元素存储到另一个集合里

    小结:这里是吧set1和set2的不同元素存储到set3集合里

    127.0.0.1:6379> sadd set1 aaa
    (integer) 1
    127.0.0.1:6379> sadd set1 bbb
    (integer) 1
    127.0.0.1:6379> sadd set1 ccc
    (integer) 1
    127.0.0.1:6379> smembers set1
    1) "ccc"
    2) "bbb"
    3) "aaa"
    127.0.0.1:6379> sadd set1 bbb
    (integer) 0
    127.0.0.1:6379> smembers set1
    1) "ccc"
    2) "bbb"
    3) "aaa"
    127.0.0.1:6379> 

     返回满足的所有键keys *(可以模糊匹配)

    127.0.0.1:6379> keys *
    1) "list2"
    2) "list1"
    3) "set1"
    127.0.0.1:6379> keys list*
    1) "list2"
    2) "list1"

    exists 是否存在指定的key

    expire 设置某个key的过期时间,使用ttl查看剩余时间

    127.0.0.1:6379> set name zhangsan
    OK
    127.0.0.1:6379> get name
    "zhangsan"
    127.0.0.1:6379> expire name 10
    (integer) 1
    127.0.0.1:6379> get name
    "zhangsan"
    127.0.0.1:6379> ttl name
    (integer) 2
    127.0.0.1:6379> ttl name
    (integer) -2
    127.0.0.1:6379> get name
    (nil)

    persist取消过期时间(persist key)

    select选择数据库 数据库为0到15(一共16个数据库) 默认进入的是0数据库(select 0|1|2)

    move [key][数据库下标] 将当前数据中的key转移到其他数据库中(move name 1)

    randomkey 随机返回数据库中的一个key

    rename 重命名key(rename key key1)

    dbsize查看数据库的key的数量

    info 获取数据库信息

    config get实时传储收到的请求,返回相关的配置信息

    config get * 返回所有配置

    flushdb 清空当前数据库,flushall清空所有数据库

    Redis可排序集合(zset)类似于Redis集合,是不重复的字符集合。 不同之处在于,排序集合的每个成员都与分数相关联,这个分数用于按最小分数到最大分数来排序的排序集合。虽然成员是唯一的,但分数值可以重复。

    127.0.0.1:6379> zadd database 0 redis
    (integer) 1 
    127.0.0.1:6379> zadd database 0 mongodb
    (integer) 1 
    127.0.0.1:6379> zadd database 1 sqlite
    (integer) 1 
    127.0.0.1:6379> zadd database 1 sqlite
    (integer) 0 
    127.0.0.1:6379> ZRANGEBYSCORE database 0 1000  
    1) "mongodb" 
    2) "redis" 
    3) "sqlite"

    因为'sqlite'的排序值是1,其它两个元素的排序值是0,所以'sqlite'排在最后一个位置上。

  • 相关阅读:
    Eclipse常用快捷键
    Kali Linux安装Google中文输入法(只需5步)
    Kali Linux 更新源 操作完整版教程
    Oracle存储过程的异常处理
    Eclipse调试DEBUG时快速查看某个变量的值的快捷键、快速跳转到某行的快捷键
    oracle listagg和wm_concat函数
    ORACLE分页查询SQL语法——最高效的分页
    Mock拦截请求URL返回模板数据
    前端安全之XSS攻击及防御
    Sublime Text3注册码,亲测可用
  • 原文地址:https://www.cnblogs.com/winner-0715/p/6682970.html
Copyright © 2011-2022 走看看