redis学习笔记

Redis学习

学习目标:

  1. 了解noSQL和redis
  2. 了解redis的5种数据类型
  3. 了解redis的增、删、改、查操作

1.NoSQL简介

no sql是什么?

就是一种No SQL产品,和数据库完成的工作不一样,工作场合不同,只做最简单的数据存储 增、查。
no sql (Not Only SQL)翻译翻译:不仅仅是SQL ):
准确点:Not relational SQL 非关系型SQL。

2.redis简介

redis是什么?

redis是一个免费开源、高性能的NoSQL产品,提供了很多语言的开发接口。
redis使用C语言编写,是一个key-value存储系统。支持存储的value类型很多,包含string(字符串)、hash(哈希类型)、list(列表)、set(集合)、zset(sorted-set有序集合)
redis会周期性的把更新的数据写入磁盘、或者把修改操作写入追加的记录文件。

3.redis基本操作

3.1启动

启动服务端

redis-server

启动客户端

不支持中文

redis-cli
支持中文
redis-cli–raw

启动成功运行测试

ping–测试与redis服务器是否联通
在这里插入图片描述

3.2切换数据库基本操作

redis 16个数据库没有名称,编号为0-15,默认是0数据库,

选择数据库
select 2 选择2号数据库

3.3redis数据类型: 键值对说明

  • redis里是key- value的数据结构,没有表结构。
  • 每条数据都是键值对。
  • 键(key)的类型是字符串(string)
  • 值(value)的类型分为5种
    1. 字符串 string
    2. 哈希 hash
    3. 列表 list
    4. 无序集合 set
    5. 有序集合 zset

4.字符串

  • string 是redis 最基本的类型。在这里插入图片描述

4.1增加、修改 set

  • 如果设置的键不存在则为添加,存在则为修改值。
  • redis中字符串可以用单引号、或者双引号括起来,也可以不用引号,如"aaa"、‘aa’、aa。
设置键值
setkeyvalue
 #例:设置 user1 值为 aaa
 set "user1" "aaa"
 set "user1" "BBB"  修改
设置键值过期时间,以秒为单位
setex 键 过期时间 值
 setex key second 3	  #(设置key3秒后过期)
设置多个键值对
mset key1 value1 key2 value2 ·····
 #例:
 mset user1 aaa user2 bbb
已有值后追加值
 qppend  key value
#例:给user1值后追加hhh
 append user1 hhh

4.2查,获取值 get

获取语法:

get key
# 例
get user1
获取多个值mget
mget key1 key2····
#例:
mget user1 user2

4.3删除 del

可以删除一个或多个

del key1
del key2 key2····

5.键相关命令

5.1查找键 keys

  • 查找到后返回键的名字。支持通配符
#查找user1键,
keys  user1
#查找所有键
keys *  
#查找包含u的键
keys *s*

5.2判断键是否存在exists

  • 存在返回1,不存在返回0
exists key
#例:
exists user1

5.3查看键对应的值value类型 type

type key
type user1

5.4设置已有键过期时间 expire

expire  key
expire user1 100 #设置user1键过期时间为100秒

5.5查看键的过期时间 ttl

ttl key
ttl user1
#以秒为单位
#返回大于0,代表有效时间多少秒
#返回-1,代表永久有效
#返回-2,表示键不存在

6.哈希hash

6.1hash介绍,hash是什么?

  • hash是用于存储“键值对”的集合。
  • 每个hash中的键可以理解为字段(field),对应一个值为value。
  • hash中值类型为字符串。
  • 同一个hash中字段名(field)不可以重复。
    结合redis看看,如下图
    在这里插入图片描述

6.2redis增加、修改hash类型的值 hset

#如果设置的键不存在则为添加,存在则为修改值
#设置单个值
hset key field value
#例:设置键huser1的字段name的值为TOm
hset huser1 name Tom

======================================
#设置多个字段
hset key field value field2 value2······
#例;
hset huser2 name1 tom1 sex n

6.3redis获取hash类型的值 hget

#6.3.1获取指定键所有的字段
hkeys key
#例:
hkeys huser2 #获取huser2的所有字段
=======================================
#6.3.2获取一个字段的值
hget key field
#例:
hget huser2 name #获取huser2的name字段值
=======================================
#6.3.3获取多个字段的值
hmget key field1 field2·····
#例:
hmget huser2 name sex  #获取huser2多个字段的值
=======================================
#6.3.4获取所有字段的值
hvals key
例:
hvals huser2  #获取了huser2所有字段的值
=======================================
#6.3.5获取所有的字段名包括对应值
hgetall key
#例:
hgetall huser2 

6.4redis删除hash类型的值 del

#6.4.1删除指定字段
hdel key field
#例:
hdel huser2 sex
======================================
#6.4.2删除整个hahs键,字段及其值
del key1 key2····
#例:
del huser2

7.列表list

7.1redis中list介绍

  • 列表中值value为字符串类型。
  • 列表中字符串按添加顺序排列。
    图像参考:
    在这里插入图片描述

7.2redis中增加list类型值 lpush、rpush

#7.2.1从左侧开始添加值
lpush key value1 value2 value3 ·····
#例:添加luser列表值aa、bb、cc
lpush luser aa bb cc
======================================== 
#7.2.2从右侧开始添加值
rpush key value1 value2 value3 ·····
#例:添加luser列表值dd
rpush luser dd

上面添加后luser内部:
在这里插入图片描述

7.3在list value 中插入值 linsert

#在指定值前或后插入值
linsert key  before/after 值 插入的值
#例:在luser 的list value中值cc前插入值11
linsert luser before cc 11

7.3获取list value 值 lrange

  • 列表中每一个值都对应一个编号索引,从0开始。
  • 索引为负数,表示从列表尾部开始计数,即 -1 代表最后一个值。
#返回指定范围内的值
lrange key start stop  # start stop为范围 
#例:获取键luser value list中所有值
lrange luser 0 -1

7.4修改list value 中的值 lset

#修改指定索引的值
lset key 索引 值
#例:修改键luser ,list value中第一个值为eee
lset luser 0 eee

7.5删除list value 中的值 lrem

  • 模板用例:
    在这里插入图片描述

  • 删除指定值

    • 将列表中前count次出现的值移除。
    • count > 0 :从头往尾删除。
    • count < 0 :从尾开始删除。
    • count = 0 :删除所有值
    #删除值模板
    lrem key count value # value指定值
    
    #例1:从键luser list 右侧开始删除1个dd值
    lrem luser -1 dd
    =====================================
    #例2:删除luser list 中所有的dd值
    lrem luser 0 dd
    =====================================
    #例:从键luser list 左侧开始删除1个dd
    lrem luser 3 dd
    

8.无序集合set

8.1redis中set介绍

  • 集合中不允许存在重复的值
  • 无序集合中值类型为字符串。
  • 集合里的值只能添加、删除,不能修改。
    参考图:
    在这里插入图片描述

8.2添加set value值 sadd

  • 添加已存在值没有意义。
#集合中添加值
sadd key value1 value2 ····
#例:
sadd suser aa bb cc
#例:再添加aa,集合中值不会变
sadd suser aa

8.3获取set value值 smembers

#模板 获取键set value中所有值
smmebers key
#例:
smmebers suser

8.4删除set value值 srem

#删除指定值
srem key

9.有序集合zset

9.1redis中zset介绍

  • 有序集合中值类型为字符串。
  • 集合里不允许有重复的值。
  • 每个值都会关联一个分数(score),通过分数从小到大排序,分数可以为负数。
  • 有序集合里的值也不能修改。
    参考图:
    在这里插入图片描述

9.2添加redis中zset value值 zadd

#添加值
zadd key score1 value1 score2 value2 ·····
#例:向键zuser 的zset value中添加值aa bb cc dd,分数分别是1 3 5 2
zadd zuser 1 aa 3 bb 5 cc 2 dd

看看效果图:按分数大小排列
在这里插入图片描述

9.2获取redis中zset value值 zrange

  • 返回指定范围内的值
    • 第一个值索引为0 。
    • 索引可以是负数,表示从尾开始计数,-1代表最后一个值。
    • withscores :可以同时获取对应分数score。
#模板
zreange key start stop  withscores #start stop 索引范围
#例:获取键zuser zset中所有值
zrange zuser 0 -1 
============================
#例:获取键zuser zset 中所有值及其对应分数
zrange zuser 0 -1 withscores
9.2.1通过score获取值
  • 返回分数score在 min 到max 之间的值
#模板
zrangebyscore key min max 
#例:获取键zuser zset中分数在2到5之间的值
zrangebyscore zuser 2 5
9.2.2获取值的score
#获取value的score
zscore key value
#例:
zscore zuser aa

9.3删除 zrem

#删除指定值
zrem key value1 value2 ····
#例:
zrem zuser aa bb
============================================
#删除分数在指定范围之间的值
zremrangebyscore key min max
#例:删除zuser zset中分数在2,5之间的值
zremrangebyscore zuser 2 5

10.总结

redis中value类型操作
字符串 string增、改:set 查:get 、mget 删: del
哈希hash增、改:hset 查:hget、hmget 删: del
列表list增:lpush 、rpush 插入:linsert 改:lset 查:lrange 删: lrem
无序集合set增:sadd 查:smembers 删: srem
有序集合zset增:zadd 查:zrange、zrangebyscore 删: zrem
  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值