redis入门

一、Redis

缓存服务器——Redis

1.为什么要使用缓存服务器——Redis

为了减轻数据库的压力,且缓存服务器Redis的性能是非常强大,于是将一些经常需要被访问的数据放到缓存服务器中,而不是放到数据库中。

2.Redis介绍

Redis是一款NoSQL类型的数据库。它的性能非常好,使用内存来操作数据。那数据会丢吗?redis提供了多种持久化机制。将数据持久化到磁盘上。

3.安装Redis

进入到:cd /usr/local/docker/redis

打开docker-compose.yml文件:vim docker-compose.yml

version: '3.1'
services:
  redis:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 6379:6379

4.操作redis服务器

  • 进入到redis容器中: docker exec -it 容器id bash
  • 直接执行命令: redis-cli
redis-cli  # 默认连接的是本地的redis服务器 127.0.0.1:6379
redis-cli -h 192.168.2.11 -p 6379  # 指明redis服务器的ip和端口

5.redis中的数据结构

刚才我们接触到了redis的基本操作:

set k1 v1
get k1

这种操作是对redis中的String类型进行操作,redis中一共有五种数据类型

  • key-string:字符串类型,也支持整型的数值操作
  • key-hash:hash类型,hash里存放的是键值对。键:学生的学号1001. 值: 姓名-小明,年龄-18,住址-杭州
  • key-list: 数组类型。有序、可重复
  • key-set:集合类型。无序、不重复
  • key-zset:可排序的集合类型。

二、Redis中的各种数据类型的操作

1.string类型

set k1 v1
get k1
del k1 # 删除键值对
mset k1 v1 k2 v2 ... #一次性设置多个键值对
mget k1 k2 ... # 一次性获取多个键值对
incr k1 # 给值+1,前提是值是整数
incrby k1 2 # 给值+2
decr k1 # 给值-1,前提是值是整数
decrby k1 2 #给值-2
setex k4 10 v4 # 设置键值对,并设置存活时间是10秒
ttl k4 # 查看该键值对的存活时间,-1 表示长期, -2表示已被删除, 其他值表示剩余的生命秒值。
append k2 v2 # 在k2的值后面追加v2字符串
strlen k2 # 查看k2的值的长度
setnx mylock hello # 通过redis设置分布式锁
   # 当redis数据库中已经存在mylock键,那么这次的存储是失败的,返回0 要想成功的话,必须先删除之前的mylock键值对,或者给mylock设置超时时间,当时间一到,自动删除。
   # 当redis数据库中没有存在mylock键,于是就能创建成功,返回1.
expire mylock 10 # 设置已存在的键的存活时间是10秒
exists k1 # 判断k1是否已存在,如果存在1 不存在0

2.hash类型

#1. 存储数据
hset key field value

#2. 获取数据
hget key field

#3. 批量操作
hmset key field value [field value ...]
hmget key field [field ...]

#4. 自增(指定自增的值)
hincrby key field increment

#5. 设置值(如果key-field不存在,那么就正常添加,如果存在,什么事都不做)
hsetnx key field value

#6. 检查field是否存在
hexists key field 

#7. 删除key对应的field,可以删除多个
hdel key field [field ...]

#8. 获取当前hash结构中的全部field和value
hgetall key

#9. 获取当前hash结构中的全部field
hkeys key

#10. 获取当前hash结构中的全部value
hvals key

#11. 获取当前hash结构中field的数量
hlen key

3.list类型

关于list中的操作,关键是要记住怎么使用list模拟栈的先进后出,队列的先进先出的效果。lpush rpush lpop rpop

#1. 存储数据(从左侧插入数据,从右侧插入数据)
lpush key value [value ...]
rpush key value [value ...]

#2. 存储数据(如果key不存在,什么事都不做,如果key存在,但不是list结构,什么都不做)
lpushx key value
rpushx key value

#3. 修改数据(在存储数据时,指定好你的索引位置,覆盖之前索引位置的数据,index超出整个列表的长度,也会失败)
lset key index value

#4. 弹栈方式获取数据(左侧弹出数据,从右侧弹出数据)
lpop key
rpop key

#5. 获取指定索引范围的数据(start从0开始,stop输入-1,代表最后一个,-2代表倒数第二个)
lrange key start stop

#6. 获取指定索引位置的数据
lindex key index

#7. 获取整个列表的长度
llen key

#8. 删除列表中的数据(他是删除当前列表中的count个value值,count > 0从左侧向右侧删除,count < 0从右侧向左侧删除,count == 0删除列表中全部的value)
lrem key count value

#9. 保留列表中的数据(保留你指定索引范围内的数据,超过整个索引范围被移除掉)
ltrim key start stop

#10. 将一个列表中最后的一个数据,插入到另外一个列表的头部位置
rpoplpush list1 list2

4.Set类型

set是一个集合,存储的是无序的,不可重复的数据,可以用set做去重。

# 往set集合中存数据
sadd myset m1 m2 m3
# 显示set集合中的数据
smembers myset
# 随机获取一个集合中的数据,默认情况下是弹出一个,当然可以设置弹出的数量
spop myset [count]
# 求两个集合的交集
sinter set1 set2
# 求两个集合的并集
sunion set1 set2
# 求集合1在集合2中的差集(集合2中没有的集合1的元素)
sdiff set1 set2
# 移除集合中的某个元素
srem set1 m3
# 判断集合中是否有该元素
sismember set1 m3

5.zset类型

可排序的set集合,要排序需要有一个排序依据。在添加数据时需要指明该数据的分值,用于排序

# 向zset中添加元素并指明元素的分值
zadd myzset 100 xiaoming 99 xiaowang 90 xiaozhao 
# 查看zset集合中的元素,从小到大排列
zrange myzset 0 -1
# 查看zset集合中的元素,从大到小排列
zrevrange myzset 0 -1
# 查看集合中的元素的个数
zcard myzset
# 查看当前具体成员的分数
zscore myzset xiaoming
# 给具体成员添加分数
zincrby myzset 10 xiaowang
# 统计当前集合中该分数范围内的成员的数量
zcount myzset 80 90
# 获取指定分数范围内的成员(大于等于 & 小于 )
zrangebyscore myzset 80 90

6.补充redis的常用命令

# keys pattern 来检索redis中的key
keys *
keys s*  检索s开头的key
keys *t  检索z结尾的key
# persist key 让一个键的生命时间为长期有效的。
persist myset 
# 选择操作的库 很少用
select 0~15
#3. 查看当前数据库中有多少个key
dbsize
#4. 查看最后一次操作的时间
lastsave
#5. 实时监控Redis服务接收到的命令
monitor
posted @ 2021-07-22 08:23  牛奶配苦瓜  阅读(55)  评论(0)    收藏  举报