小白学习Redis(一)

Redis笔记(一)

基础篇

安装好Redis后如何连接:
命令 : 1. redis-cli 2. auth [密码]

命令: redis-cli -h [IP地址] -p [端口号] -a [密码]

如何切换库

select [库编号] 0-14

Redis常见命令

Redis数据结构介绍

​ Redis是一个key—value的数据库,key一般都是String value类型多种多样,有以下几种

  1. String
  2. Hash
  3. List
  4. Set
  5. SortedSet
  6. GEO
  7. BitMap
  8. HypetLog

前五种数据类型是Redis的基本数据类型,以后用到的大部分也是这五种

​ Redis为了方便开发者的学习使用,在其官网有各种类型命令的教程Redis。也可以在使用redis命令行来查看命令的使用方式

help @[命令行] 如:help @set

Redis通用命令

​ 通用命令是不分数据类型的,所有的数据类型都可以使用。通用命令有许多,详情可以在Redis官网查看。在generic分类下的命令都是通用命令

也可以在命令行使用help命令查看有哪些通用命令

help @generic

下面介绍几个常用的通用命令

  1. keys:查看符合模板的所有key,不建议在生产环境下使用

    keys * //查看所有key
    keys a* //查看所有a开头的key
    keys a?? //查看a开头并且a后面有两个字符的key。问好代表占位符
    
  2. Del:删除指定的key

    del name //删除名为name的key
    del n1 n2 n3//批量删除key
    
  3. Exists:判断一个key是否存在

    exists name //判断名为name的key是否存在 存在返回 1;不存在返回 0
    
  4. EXPIRE:给一个key设置有效期,有效期到了后自动删除这个key

    expire age 18 //设置名为age的key有效期是18秒的时间
    
  5. TTL:查看一个key的剩余有效时间

    ttl age //查看名为age的key的剩余有效时间。单位:秒 
    

    返回-2代表该key已过期,不存在了。返回-1代表该key为永久有效


String类型

​ String类型也就是字符串类型,是Redis最简单的存储类型,其Value是字符串。不过根据其字符串的格式不同,又可以分为三种

  • String:普通字符串。如:“abc”

  • int: 整数类型,可以做自增、自减的操作。如:“123”

  • float:浮点类型,可以做自增、自减的操作。如:“123.23”

    不管哪种格式,底层都是字节数组形式存储,只不过是编码不同。字符串类型的最大空间不能超过512m

下面介绍几个常用的String类型命令

  1. Set:添加或者修改已经存在的一个String类型的键值对

    set name zhangsan //设置名为name的key,value为“zhangsan”
    
  2. Get:根据key获取String类型的Value

    get name //获取名为name的key,返回value
    
  3. MSet:批量添加多个String类型的键值对

    mset k1 v1 k2 v2 k3 v3
    
  4. MGet:批量获取多个String类型的键值对

    mget k1 k2 k3 
    
  5. INCR:让一个整形的key自增1

    set age 18
    incr age
    
  6. INCRBY:让一个整型的key自增并指定步长,例如incrby num 2让num自增2

    incrby age 2
    
  7. INCRBYFLOAT:让一个浮点型的key自增并指定步长,例如incrby num 2.3让num自增2

    set i  2.45
    incrbyfloat i 2
    
  8. SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

    setnx name lis //name存在,不执行
    setnx name2 lis //name2不存在,执行
    
  9. SETEX:添加一个String类型的键值对,并添加有效期

    setex num 100 10 //100秒后num销毁
    

Key的结构

​ Redis的key允许有多个单词形成层级结构,多个单词使用“:”隔开;格式如下

​ 项目名:业务名:类型:id

​ 如果Value是一个java对象,例如一个User对象,则可以将对象序列化为json字符串后存储:

Keyvalue
xiangmu:user:1{“id”:1,“name”:“zhangsan”,“age”:18}

Hash类型

​ Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。

​ Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD

keyvalue
fieldvalue
xiangmu:user:1name
age
zhangsan
18

Hash类型常用命令

  1. Hset key field value:添加或修改hash类型key的field的值

    hset xiangmu:user:2 field name lisi //给键名为xiangmu:user:2的建设置以一对键值对
    {name:lisi}
    
  2. Hget key field:获取一个hash类型key的filed的值

    hget xiangmu:user:2 name //返回“lisi”
    
  3. HMset:批量添加多个hash类型key的field的值

    Hmset xiangmu:user:3  name wangwu age 18;
    

    hset也可以支持这种功能

  4. HMget:批量获取多个hash类型key的field的值

    hmget xiangmu:user:2 xiangmu:user:3  //返回 name age
    
  5. HgetAll:获取一个hash类型key中的所有field和value

    hgetAll xiangmu:user:3  //返回  name wangwu age 18
    
  6. Hkeys:获取一个hash类型key中的所有field

    hkeys xiangmu:user:3 //返回name age
    
  7. Hvals:获取一个hash类型key中的所有value

    Hvals xiangmu:user:3  //返回 wangwu 18
    
  8. Hincrby:让一个hash类型key的字段值自增并指定步长

    Hincrby xiangmu:user:3 age 2 //返回20
    
  9. Hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

    Hsetnx xiangmu:user:3 sex man //添加成功
    
List类型

​ Redis中的listt类型有点像Java中的LinkedList类似,可以看成是一个双向链表结构。既可以正向检索也可以支持方向检索。其特征业余LinkedList类似

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

List类型常用命令

  1. LPUSH key element … :向列表左侧插入一个或多个元素

    LPUSH nums 1 2 3 //创建键名为nums的list类型的key 值从左侧依次插入1,2,3
    
  2. LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil

    LPOP nums //返回3
    
  3. RPUSH key element … :向列表右侧插入一个或多个元素

    RPUSH nums 1 //向nums右侧插入4
    
  4. RPOP key:移除并返回列表右侧的第一个元素

    RPOP nums //返回4
    
  5. LRANGE key star end:返回一段角标范围内的所有元素

    LRANGE nums 0 2 //返回2  角标从左往右,从0开始
    
  6. BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

    BLPOP nums2 100 //返回nums2 左侧的第一个元素,没有的话等待100秒
    

Set类型

​ Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

Set类型的常用方法

  1. SADD key member … :向set中添加一个或多个元素

    SADD arr zhangsan lisi //创建键名为arr的set类型的key
    
  2. SREM key member … : 移除set中的指定元素

    SREM arr lisi //将lisi从arr中移除
    
  3. SCARD key: 返回set中元素的个数

    SCARD arr //返回1
    
  4. SISMEMBER key member:判断一个元素是否存在于set中

    SISMEMBER arr zhangsan //判断zhangsan是否存在与arr中
    
  5. SMEMBERS key:获取set中的所有元素

    SMEMBERS arr //获取arr中所有的元素
    
  6. SINTER key1 key2 … :求key1与key2的交集

    SADD arr2 wangwu zhaoliu zhangsan
    SINTER arr arr2 //获取arr与arr2的交集
    

SortedSet类型

​ redis中的sorteset是个可以排序的set集合,与Java中的TreeSet类似。但底层数据结构差异大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet类型常用方法

  1. ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
  2. ZREM key member:删除sorted set中的一个指定元素
  3. ZSCORE key member : 获取sorted set中的指定元素的score值
  4. ZRANK key member:获取sorted set 中的指定元素的排名
  5. ZCARD key:获取sorted set中的元素个数
  6. ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
  7. ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
  8. ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
  9. ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
  10. ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:

  • 升序获取sorted set 中的指定元素的排名:ZRANK key member
  • 降序获取sorted set 中的指定元素的排名:ZREVRANK key memeber

总结

​ redis常用的类型有StringHashListSetSorteSet分别类似于Java中的String、HashMap、LinkedList、HashSet、TreeSet。其通用方法和各种类型的常用方法都可以在redis官网查找。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值