Redis数据类型

1、Sting类型

  • set命令

    设置键值,存在则覆盖,不存在则新建

  • set key value EX 秒

    设置有效时长为秒

  • nx 如果键不存在则新建,如果存在返回nil

  • xx 只有键存在才能操作

127.0.0.1:6379> auth foobared # 注释Windows上操作redis时需要输入配置文件上的密码
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set wusir 666
OK
127.0.0.1:6379> get wusir
"666"
127.0.0.1:6379> set gg ll ex 5
OK
127.0.0.1:6379> get gg
"ll"
127.0.0.1:6379> get gg
(nil)
127.0.0.1:6379> keys *
1) "wusir"
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k1 v1 nx
(nil)
127.0.0.1:6379> set k2 v2 nx
OK
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> set k3 v3 xx
(nil)
127.0.0.1:6379> set k1 va
OK
127.0.0.1:6379> get k1
"va"
127.0.0.1:6379>
  • get命令

    获取key 对应的value,只能获取一个,KEY存在,返回value,不存在返回nil

  • mset

    批量设置key,和value的值,会覆盖已存在的值

  • mget

    批量获取key值,如果不存在返回nil

  • getset

    给key重新设定value,并返回原来的value,如果key不存在则返回nil

  • strlen

    返回value的长度

  • append

    key存在追加,不存在新建

  • incr

    将Key中的数字加1,只能对数字产生作用

    • 常用作计数,在使用getset重置为0
  • decr

    将Key中的数字减1,只能对数字产生作用

  • incrby

    增加指定值 多少,只能对数字产生作用

  • decrby

    减少指定值 多少,只能对数字产生作用

  • indcrbyfloat(默认保留17位)

    增加指定的浮点数,不存在减少,但是可以加上负的浮点数

  • getrange

    切片同Python切片类似,没有步长

  • 127.0.0.1:6379> mset k5 v5 k6 v6
    OK
    127.0.0.1:6379> get k5
    "v5"
    127.0.0.1:6379> get k6
    "v6"
    127.0.0.1:6379> get k3
    (nil)
    127.0.0.1:6379> keys *
    1) "k6"
    2) "k2"
    3) "wusir"
    4) "k1"
    5) "k5"
    127.0.0.1:6379> set k3 v3
    OK
    127.0.0.1:6379> mget k1 k2 k3
    1) "va"
    2) "v2"
    3) "v3"
    127.0.0.1:6379> mset k1 v1 k7 v7
    OK
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> getset k1 va
    "v1"
    127.0.0.1:6379> get k1
    "va"
    127.0.0.1:6379> strlen wusir
    (integer) 3
    127.0.0.1:6379> append k1 vava
    (integer) 6
    127.0.0.1:6379> get k1
    "vavava"
    127.0.0.1:6379> set k8 8
    OK
    127.0.0.1:6379> incr k8
    (integer) 9
    127.0.0.1:6379> get k8
    "9"
    127.0.0.1:6379> decr k8
    (integer) 8
    127.0.0.1:6379> get k8
    "8"
    127.0.0.1:6379> incrby k8 10
    (integer) 18
    127.0.0.1:6379> decrby k8 9
    (integer) 9
    127.0.0.1:6379> get k8
    "9"
    127.0.0.1:6379> set name wusir
    OK
    127.0.0.1:6379> keys *
    1) "name"
    2) "k2"
    3) "wusir"
    4) "k5"
    5) "k6"
    6) "k8"
    7) "k1"
    8) "k3"
    9) "k7"
    127.0.0.1:6379> getrange 1,3
    (error) ERR wrong number of arguments for 'getrange' command
    127.0.0.1:6379> getrange name 1,3
    (error) ERR wrong number of arguments for 'getrange' command
    127.0.0.1:6379> GETRANGE name 1 3
    "usi"
    127.0.0.1:6379> get name
    "wusir"
    127.0.0.1:6379> getrange -1 -3
    (error) ERR wrong number of arguments for 'getrange' command
    127.0.0.1:6379> getrange name -1 -3
    ""
    127.0.0.1:6379> getrange name 1 3
    "usi"
    127.0.0.1:6379> getrange name -3 -1
    "sir"
    127.0.0.1:6379>

2.List类型

lpush:从左边推入
lpop:从右边弹出
rpush:从右变推入
rpop:从右边弹出
  • lpush插入
    • 语法:lpush 名称 值1 值2
  • lrange 查看所有
    • lrange 名称 0 -1
  • lpop
    • 移除并返回列表的第一个元素
  • rpop
    • 移删除尾部的值
  • rpush(插入在最后的位置)
    • 语法:rpush 名称 值1 值2,
  • rpushx
    • 将value值插入到Key的尾部,Key必须存在才可以
  • lpushx
    • 将value值插入到Key的头部,Key必须存在才可以
  • 127.0.0.1:6379> auth foobared
    OK
    127.0.0.1:6379> lpush list 11 22
    (integer) 2
    127.0.0.1:6379> lrange list 0 -1
    1) "22"
    2) "11"
    127.0.0.1:6379> rpush aaa bbb ccc
    (integer) 2
    127.0.0.1:6379> lrange list 0 -1
    1) "22"
    2) "11"
    127.0.0.1:6379> lrange aaa 0 -1
    1) "bbb"
    2) "ccc"
    127.0.0.1:6379> rpush list aaa bbb cc
    (integer) 5
    127.0.0.1:6379> lrange list 0 -1
    1) "22"
    2) "11"
    3) "aaa"
    4) "bbb"
    5) "cc"
    127.0.0.1:6379> keys *
    1) "aaa"
    2) "list"
    127.0.0.1:6379> del aaa
    (integer) 1
    127.0.0.1:6379> keys *
    1) "list"
    127.0.0.1:6379> lpop list
    "22"
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "aaa"
    3) "bbb"
    4) "cc"
    127.0.0.1:6379> rpop list
    "cc"
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "aaa"
    3) "bbb"
    127.0.0.1:6379>
  • lindex
    • 从表头开始获取下标为index的value,索引从0开始
  • linsert
    • 将value插入到key指定元素的key前或者后BEFORE AFTER,如果value不存在,则不操作
  • llen
    • 获取列表的长度
  • lrem
    • count >0 从表头向表位,查找指定的个数
    • count=0全部删除
    • count <0 从表尾的方向表头,查找指定的个数
  • lset
    • 置换指定索引位置的value,如果超出索引范围则报错
  • ltrim
    • 列表切片
  • 127.0.0.1:6379> keys *
    1) "list"
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "aaa"
    3) "bbb"
    127.0.0.1:6379> linde list 1
    (error) ERR unknown command 'linde'
    127.0.0.1:6379> lindex list 1
    "aaa"
    127.0.0.1:6379> linsert list before aaa hello
    (integer) 4
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "hello"
    3) "aaa"
    4) "bbb"
    127.0.0.1:6379> linsert list after aaa hhh
    (integer) 5
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "hello"
    3) "aaa"
    4) "hhh"
    5) "bbb"
    127.0.0.1:6379> llen list
    (integer) 5
    127.0.0.1:6379> lpush list aaa
    (integer) 6
    127.0.0.1:6379> lrange list 0 -1
    1) "aaa"
    2) "11"
    3) "hello"
    4) "aaa"
    5) "hhh"
    6) "bbb"
    127.0.0.1:6379> lrem list 1 aaa
    (integer) 1
    127.0.0.1:6379> lrange list 0 -1
    1) "11"
    2) "hello"
    3) "aaa"
    4) "hhh"
    5) "bbb"
    127.0.0.1:6379> lpush list bbb
    (integer) 6
    127.0.0.1:6379> lrange list 0 -1
    1) "bbb"
    2) "11"
    3) "hello"
    4) "aaa"
    5) "hhh"
    6) "bbb"
    127.0.0.1:6379> lrem list -1 bbb
    (integer) 1
    127.0.0.1:6379> lrange list 0 -1
    1) "bbb"
    2) "11"
    3) "hello"
    4) "aaa"
    5) "hhh"
    127.0.0.1:6379> lpush list hhh
    (integer) 6
    127.0.0.1:6379> lrange list 0 -1
    1) "hhh"
    2) "bbb"
    3) "11"
    4) "hello"
    5) "aaa"
    6) "hhh"
    127.0.0.1:6379> lrem list 0 hhh
    (integer) 2
    127.0.0.1:6379> lrange list 0 -1
    1) "bbb"
    2) "11"
    3) "hello"
    4) "aaa"
    127.0.0.1:6379> lset list 1 zbh
    OK
    127.0.0.1:6379> lrange list 0 -1
    1) "bbb"
    2) "zbh"
    3) "hello"
    4) "aaa"
    127.0.0.1:6379> ltrim list 1 3
    OK
    127.0.0.1:6379> lrange list 0 -1
    1) "zbh"
    2) "hello"
    3) "aaa"
    127.0.0.1:6379>

3、hash型

  • 存储类型
    • {"db":{"redis":"redis.conf","mysql":"mysql.conf","ningx":"ningx.conf"}}
    • 127.0.0.1:6379> hset db redis redis.conf
      (integer) 1
      127.0.0.1:6379> hset db mysql mysql.conf
      (integer) 1
      127.0.0.1:6379> hset db ningx ningx.conf
      (integer) 1
      127.0.0.1:6379> hget db mysql
      "mysql.conf"
      127.0.0.1:6379> hgetall db
      1) "redis"
      2) "redis.conf"
      3) "mysql"
      4) "mysql.conf"
      5) "ningx"
      6) "ningx.conf"
      127.0.0.1:6379>
  • HSET
    • 给hash增加key value值
  • HLEN
    • 获取hash的长度
  • hget
    • 获取 hash里面的key和value值
    • 语法:hget hashname key
  • hgetall
    • 获取所有的键值对
  • hmset
    • 批量增加键值对
  • hmget
    • 批量获取键值对
  • hsetnx
    • 给指定的hash增加键值对,如果原来的Filed存在,则操作无效,如果不存在则创建
  • hkeys
    • 获取hash所有的field
  • hvals
    • 获取hash中所有的value
  • hdel
    • 删除hash表中一个或者多个filed
  • hexists
    • 判断hash表中是否存在,如果存在为1,不存在为0
  • hincrby
    • 给hash表中的数字,增加指定的数值,只限数值
  • hincrbyfloat
    • 给hash表中的数字,增加指定的浮点数值,只限数值
  • 127.0.0.1:6379> hgetall db
    1) "redis"
    2) "redis.conf"
    3) "mysql"
    4) "mysql.conf"
    5) "ningx"
    6) "ningx.conf"
    127.0.0.1:6379> HLEN db
    (integer) 3
    127.0.0.1:6379> hmset ac 1 2 2 3 3 4 4 5 5 6
    OK
    127.0.0.1:6379> hmget ac 1 2 3 4 5
    1) "2"
    2) "3"
    3) "4"
    4) "5"
    5) "6"
    127.0.0.1:6379> hkeys ac
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    127.0.0.1:6379> hvals db
    1) "redis.conf"
    2) "mysql.conf"
    3) "ningx.conf"
    127.0.0.1:6379> hdel ac 5
    (integer) 1
    127.0.0.1:6379> hkeys ac
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    127.0.0.1:6379> hexists db mysql
    (integer) 1
    127.0.0.1:6379> hexists db sqlserver
    (integer) 0

4、SET型

  • sadd
    • 给集合添加值,如果存在则保留,什么都不操作,如果值不存在则添加
  • smembers
    • 获取所有的成员
  • SCARD
    • 获取集合个数
  • sdiff
    • 获取两个集合差集,前面存在的但是后面不存在的元素
  • sinter
    • 获取两集合的交集
  • sunion
    • 获取两集合并集
  • sismember
    • 判断元素是否在集合内,存在为1,不存在返回0
  • smove
    • 将指定的元素从一个集合移动到另一个集合中,如果源集合存在则移动,如果不存在则忽略;如果目标集合存在直接移动,如果目标集合不存在则新建并移动;
  • spop
    • 随机删除指定个数的元素,并把删除的元素打印出来
  • srandmeber
    • 随机获取指定个数元素

    • 如果count>0

      • count>集合总数,全部取出
      • count小于集合总数,则随机取出count个
    • 如果count<0,则随机count次取出值

  • SREM
    • 删除集合中的指定一个或者多个元素
  • 127.0.0.1:6379> sadd col k1 k1 k1 k2 k3 k2
    (integer) 3
    127.0.0.1:6379> smembers col
    1) "k2"
    2) "k3"
    3) "k1"
    127.0.0.1:6379> scard col
    (integer) 3
    127.0.0.1:6379> sadd coo k1 k5
    (integer) 2
    127.0.0.1:6379> sdiff col coo
    1) "k2"
    2) "k3"
    127.0.0.1:6379> sinter col coo
    1) "k1"
    127.0.0.1:6379> sunion col coo
    1) "k2"
    2) "k5"
    3) "k3"
    4) "k1"
    127.0.0.1:6379> sismember col k4
    (integer) 0
    127.0.0.1:6379> sismember col k3
    (integer) 1
    127.0.0.1:6379> spop col 2
    (error) ERR wrong number of arguments for 'spop' command
    127.0.0.1:6379> SPOP col
    "k2"
    127.0.0.1:6379> srem col k3
    (integer) 1

5、ZSET

有序集合

  • zadd
    • 添加
  • zrange
    • 遍历
  • 127.0.0.1:6379> zadd a 1 123
    (integer) 1
    127.0.0.1:6379> zadd a 2 123
    (integer) 0
    127.0.0.1:6379> zadd a 3 1234
    (integer) 1
    127.0.0.1:6379> zrange a 0 -1
    1) "123"
    2) "1234"
    127.0.0.1:6379>

刚刚学习,如有错误欢迎指正;

redis数据类型的使用及介绍的更多相关文章

  1. redis数据类型及常用命令介绍(图文实例)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...

  2. redis介绍、安装、redis持久化、redis数据类型

    1.redis介绍  2.安装管网:https://redis.io/下载:wget -c http://download.redis.io/releases/redis-4.0.11.tar.gz解 ...

  3. Redis数据类型介绍

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  4. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  5. redis数据类型-散列类型

    Redis数据类型 散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他 ...

  6. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  7. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  8. redis数据类型及订阅操作

    Redis数据类型详解 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPG文件的内容都可以.空字符串也是有效k ...

  9. redis教程(一)-----redis数据类型、基本命令、发布订阅以及持久化

    简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMwa ...

随机推荐

  1. linux关闭swap

    #(1)临时关闭swap分区, 重启失效; swapoff -a #(2)永久关闭swap分区 sed -ri 's/.*swap.*/#&/' /etc/fstab 也可以在sysctl.c ...

  2. python网络爬虫-静态网页抓取(四)

    静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...

  3. Android开发-数据库代码编写

    数据库代码主要是查找 package com.example.Utils.database; import android.annotation.SuppressLint; import androi ...

  4. GitHubPages的域名解析信息

    github目录下CNAME修改

  5. Flutter 2.10 更新详解

    Flutter 2.10 版已正式发布!虽然⾃ 上次稳定版本发布 以来还不到两个⽉,即使在这么短的时间内,我们也已处理和关闭了 1843 个 Issue,合并了来⾃全球 155 位贡献者的 1525 ...

  6. Visual Studio 2022 下载链接及激活密钥

    Visual Studio 2022 下载链接:https://visualstudio.microsoft.com/zh-hans/vs/ 激活码: 专业版: TD244-P4NB7-YQ6XK-Y ...

  7. 类加载器(JVM)

    一.JVM概述 JVM是java是二进制字节码的运行环境 特点: 一次编译,到处运行(跨平台) 自动内存管理 自动垃圾回收功能 常见的JVM Sun Classic VM:世界上第一款商用的java虚 ...

  8. django入门 03 模板语法

    变量值从views.py传入html 基本语法 {{ abc }} 变量abc外,用双大括号包裹 {% for item in abc %} 语句外,用大括号+百分号包裹 1. 传递字符串 views ...

  9. Swift循环的介绍

    循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...

  10. mysql启动错误:mysql.sock丢失

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 我的是Cent ...