Redis学习笔记1

1 简介

1 Redis介绍

Redis是Remote Dictionary Server(远程词典服务)的缩写,Redis
是完全开源免费的,遵守BSD协议的NOSQL数据库,Redis使用C语言编写,它的数据模型为 key-value。

Redis是一个单进程单线程,非阻塞I/O Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅支持简单的key-value(string)类型的数据,同时还提供list[列表],set[集合],zset[有序集合],hash[hash]等数据结构的存储。
  • Redis支持服务器主从模式[集群-高可用]。

2 Redis优势

相比于memcache:

  • redis支持数据的持久化,而memcache不支持
  • redis不但有string类型的key-value还有更多的数据结构存储,而memcache则只有string类型的key和value
  • memcache的集群很弱,而redis支持主从集群的
  • 端口不同 memcache 11211 redis 6379 其他优势:
  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持String(字符串), List(列表), Hash(哈希表), Set(集合) 及 Zset(有序集合) 数据类型操作。
  • 原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。多个操作也支持事务,通过MULTI和EXEC指令包起来。
  • api支持的语言丰富,调用简单(面向对象)

3 Redis源码安装

输入下列命令:

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#根据自己的需要选择合适的版本

如下图所示:
执行在这里插入图片描述
输入下列命令:

# 下载
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
# 解压
tar xzf redis-5.0.5.tar.gz
# 进入解压后目录
cd redis-5.0.5
# 编译
make 
# 安装
make PREFIX=/usr/local/redis install
复制一个redis.conf配置文件到安装好的目录中
# 注: PREFIX 指定安装后软件所在的位置,注意必须是大写

在这里插入图片描述
检查redis是否安装成功,只需要看,指定的安装目录是否存在bin目录就可以
在这里插入图片描述
对应客户端和服务端的可执行文件:
在这里插入图片描述
安装源包中的redis.conf文件,复制到安装目录中新建的etc目录中
在这里插入图片描述
启动与关闭redis服务器

# 启动
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
# 关闭
pkill redis

只需要修改redis.cof中daemon为yes,以守护进程的形式启动redis
在这里插入图片描述
在这里插入图片描述
关闭redis服务
在这里插入图片描述在这里插入图片描述
启动redis客户端:

/usr/local/redis/bin/redis-cli -h xxx -p xxx

在这里插入图片描述

4 Redis数据结构

redis提供5种 string 字符串 list 列表 set 集合 zset 有序集合 hash
简单的理解:对应数据结构中,5种常见的数据结构,在Redis中充当value的角色
Redis理解成一种k-v形式的非关系型数据库

# 查找所有符合给定模式的key
keys 查询相应的key或通配符(*)
keys查看
# 用于检查给定 key 是否存在 返回0/1 0不存在,1存在
exists key
# 查看当前数据库中设置key的数量
dbsize
# 清除当前数据库中的数据
flushdb
# 切换数据库
select N
# 清除所有数据库中的数据
flushall
#注:flushdb 还是flushall 两个尽量不要用,知道就行,在开发时,可以用一用,上线一定不要用。

在这里插入图片描述

4.1 Redis字符串操作

# 用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型
set key value [ex 秒数]/[px 毫秒数]  [nx]/[xx]
# 注后两个参数一般不写
#ex/px 缓存有效期   ex
#nx: 表示key不存在时,执行操作
#xx: 表示key存在时,执行操作  默认
#查看过期时间
ttl key
#查看value类型
type value
#设置key的有效期
expire name 300
ttl name
# 用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误
get key
# 一次性设置多个键值
mset key1 value1 key2 value2 …
# 获取多个key的值
mget key1 key2 key3 …
# 自增与自减  直接用,key自动创建,不需要先set
incr key   # 自增  每次自增1
decr key   # 自减  每次自减1
incrby key step # 指定步长的自增 可为负数
decrby key step # 指定步长的自减
# 把value追加到key的原值上
append key value
# 设置新值同步返回旧值
getset key newValue

在这里插入图片描述

4.2 Redis 列表操作

列表(list)类型是用来存储多个 有序 的 字符串。在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表、获取 指定索引下标 的 元素 等

# 把值插入到列表的头部(左边)
lpush key value
#从列表右边(尾部)删除元素,并返回删除的元素值
rpop key
#注:使用lpush 和 rpop 实现了 先进先出。
# 获取列表的长度
llen key
# 返回指定区间内的元素,下标从0开始
lrange key startIndex endIndex
#注: 默认从左开始向右获取指定索引的值,从右开始负数开始,-1就是右边第1个元素。
# 从尾部添加
rpush key value
# 从头部删除元素并返回删除元素值
lpop key
# 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
rpoplpush mylist otherlist

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 Redis哈希操作

大部分编程语言都提供了 哈希(hash)类型,它们的叫法可能是 哈希、字典、关联数组。在 Redis 中,哈希类型 是指键值本身又是一个 键值对结构。

# 把key中 field字段的值设置为 value,如果没有field字段,直接添加,如果有,则覆盖原field字段的值
hset key field value
# 一次性设置多个
hmset key field1 value1 field2 value2 …
# 获取key中指定field字段的值
hget key field
# 一次性获取之个key中field字段的值
hmget key field1 field2 …
# 返回key中所有字段的值
hgetall key
# 删除key中指定的field字段
hdel key field
# 返回key中元素的数量
hlen key
# 判断key中有没有field字段
hexists key field
# 把key中field字段的值自增长
hincrby key field step  步长可以为负数
# 返回所有key对应的field字段
hkeys key
# 返回所有key对应field字段对应的值
hvals key

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5 Redis集合操作

redis的set是无序集合。集合里不允许有重复的元素。
set元素最大可以包含(2的32次方-1)个元素。

# 向集合key中添加元素
sadd key value1 value2
# 返回key集合中所有的元素
smembers key
# 返回key集合中元素的个数
scard key
# 删除key集合中为value1的元素
srem key value1
# 随机删除key集合中的1个元素并返回
spop key
# 判断value是否存在于key集合中 注意结合前面的string和hash的操作理解
sismember key value
# 把源集合中的value删除,并添加到目标集合中  【移动】
smvoe sSet dSet value
# 求出key1,key2两个集合的交集,并返回
sinter key1 key2
# 求出key1,key2两个集合的并集,并去重,并返回
sunion key1 key2
# 求出key1与key2的差集  
sdiff key1 key2 以key1集合为主,求出key1中和key2不同的元素并返回

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.6 Redis有序集合

和set一样有序集合,元素不允许重复,不同的是每个元素都会关联一个分值。
可以通过它的分值来进行排序。

# 给key有序集合中添加元素
zadd key score(分值) value
# 删除key有序集合中指定的元素
zrem key value1
# 返回有序集中,指定区间位置内的成员 
zrange key startIndex endIndex [withscores]  # 从小到大排列
zrevrange key startIndex endIndex [withscores]  # 从大到小排列
# 按照分值来删除元素,删除score在 min<=score<=max之间的
zremrangebyscore key min max
# 返回集合元素个数 结合card理解这两个元素
zcard key
# 返回min <= score <= max分值区间内元素的数量
zcount key minScore maxScore
# 返回有序集中,成员的分数值
zscore key value
# 对有序集合中指定成员的分数加上增量 把value的分数+score值
zincrby key score 元素

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

写在最后
上述博客单纯用于记录个人学习,方便日后复习使用,同时让自己养成写博客习惯,内容质量可能不是很高,希望对小白入门有帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值