Redis学习笔记

一、Redis入门介绍

1、Redis是什么
Redis:REmote DIctionary Server(远程字典服务)。是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。

2、Redis特点

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载使用
  • Redis不仅仅支持简单的key-value类型数据,同时还提供list、set、zset、hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

3、Redis能做什么

  • 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
  • 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合中
  • 模拟类似于HttpSession这种需要设定过期时间的功能
  • 发布、订阅消息系统
  • 定时器、计数器

4、官方网站
官方网站:http://www.redis.io
中文网站:https://www.redis.com.cn/documentation.html

5、在Linux(Ubuntu)中安装Redis
前提:切换到root用户

  • 下载Redis安装包,放在/opt目录下
    在这里插入图片描述
  • 解压安装包,出现redis-6.0.6目录
tar -zxvf redis-6.0.6.tar.gz

在这里插入图片描述

  • 进入到redis-6.0.6目录,在该目录下执行make命令

在执行make命令前,如果没有gcc环境,首先要安装gcc(linux下的一个c程序编译工具)

Ubuntu命令:apt-get install gcc

在执行make命令时,出现以下错误:
在这里插入图片描述
解决上述错误,执行以下两个命令:

atp-get update
atp-get install make

顺利完成后,执行以下两个命令进行安装redis:

make
make install

在/usr/local/bin目录查看redis相关命令:
在这里插入图片描述

  • 在 linux的根目录/下创建文件夹myredis目录,备份redis.conf文件
    在这里插入图片描述
  • 修改/myredis目录下的redis.conf文件
如果没有vim,安装vim:apt install vim
cd /myredis
vim redis.conf

修改以下内容,退出保存
在这里插入图片描述
后台启动设置:daemonize yes

  • 查看redis后台进程是否开启命令:redis默认端口 :6379
ps -ef|grep redis
  • 启动redis服务命令,在/usr/local/bin目录下:
启动:redis-server /myredis/redis.conf
进入客户端:reids-cli -p 6379
判断redis服务是否启动:输入ping 得到PONG意味启动成功

在这里插入图片描述

  • 测试:
    在这里插入图片描述

  • 关闭服务:
    在这里插入图片描述

6、Redis启动后其他基础知识
1.单进程
单进程模型来处理客户端的请求,对读写等时间的响应。Redis的实际处理速度完全依靠主进程的执行效率。

2.默认16个数据库,类似数组下标从0开始,初始默认使用零号库
在这里插入图片描述
3.Select命令切换数据库

#切换至第2个库
select 1

4.Dbsize查看当前数据库的key的数量
在这里插入图片描述
5.Flushdb:清空当前库

#清空当前库的所有数据
flushdb

6.Flushall:清空全部库

#清空所有库的所有数据
flushall

7.统一密码管理,16个库都是同样的密码,要么都连上要么都连不上
8.Redis索引都是从0开始
9.默认端口是6379

二、Redis数据类型

2.1、Redis的五大数据类型

  • string
    string是redis最基本的数据类型,一个redis中字符串value最多可以是512M。
    string是二进制安全的。意思是redis的string可以包含任何数据,比如jpg图片或者序列化对象。

  • hash
    redis hash 是一个string类型的field和value的映射表,特别适合用于存储对象。
    类似Java中的Map<String,Object>

  • List
    redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表头部或尾部。底层是一个LinkedList

  • set
    redis的set是string类型的无序集合,它是通过Hashtable实现的

  • Zset
    redis zset 和set一样是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一,但分数(score)是可以重复的。

2.2、获得redis常见数据类型操作命令
http://redisdoc.com/

https://www.runoob.com/redis/redis-commands.html

https://www.redis.com.cn/commands.html

2.3、Redis 键(Key)

#查看当前库的所有key
	keys *
#查看当前库以“k”开头的key:?匹配一个字符  * 匹配多个字符
	keys k?
	keys k*
#判断某个key是否存在:exists key
	exists k1
#将key值从当前库移动到其他库: move key dbId
	move k3 2
#为给定的key设置过期时间:expire key 秒钟
	expire k2 10
#查看还有多少秒过期 -1表示永不过期 -2表示已过期 :ttl key
	ttl k1
#查看key的值的类型:type key
	type k1
#删除key: del key
	del key
#修改key的名字 rename key newkey
	rename k1 kn
...

2.4、Redis字符串(String)
单值单value

#添加一个k-v 
	set k1 v1
#取出k1
	get k1
#为k1的值追加字符串
	append k1 aaaa
#查看k1的值的长度
	strlen k1
#对key中存储的数字值进行加减操作:v必须是数字
	incr k1      ---k1的值加1
	incrby k1 3  ---k1的值加3
	decr k1      ---k1的值减1
	decrby k1 3  ---k1的值减3
#获取key值指定范围的子串
	getrange k1 0 -1  ---获取全部字符串
	getrange k1 0 3   ---获取前4个字符
#替换key值中的字符串
	setrange k1 0 xxx  ---用xxx覆写字符串,从0位置开始
#将v值关联到key,并设置key的过期时间
	setex k1 10 v1     ---设置k1的值为v1 过期时间是10秒
#只有在key不存在时设置key的值
	setnx k1 v1			---k1不存在时,设置k1的值为v1   
#同时设置一个或多个k-v对
	mset k1 v1 k2 v2    ---如果key已存在,则用新值覆盖
#同时设置一个或多个k-v,当且仅当所有给定的key都不存在
	msetnx k1 v1 k2 v2   ---如果其中又一个key已存在,则都不插入成功
#同时获取多个key值
	mget k1 k2 k3

2.5、Redis列表(List)
单值多value

#将一个值或多个值加入到列表头部
	lpush list01 1 2 3 4   --- 4 3 2 1
#将一个或多个值加入到列表尾部
	rpush list02 1 2 3 4   --- 1 2 3 4
#获取指定列表指定范围的值:lrange key start stop
	lrange list01 0 -1     ---获取全部列表的值
#移除并获取列表的第一个元素
	lpop list01       ---从列表头部移除一个元素
	rpop list01       ---从列表尾部移除一个元素
#根据索引获取列表指定位置的元素(从头到尾)
	lindex list01 2   ---获取list01列表的第三个元素
#获取列表长度
	llen list01
#移除N个列表元素
	lrem list01 2 3   ---移除列表中的23
#对一个列表进行修剪
	ltrim list01 0 4   ---保留索引位置0~4的值
#移除一个列表的最后一位数并将其添加到另一个列表的头部,返回取出的数
	rpoplpush list01 lito2
#根据索引修改指定位置的值
	lset list01 1 3   ---修改list01中1号位置的值为3
#在值1的前面或后面插入一个值
	linsert list01 before/after x java ---在x前面或后面插入java

总结:

list是一个字符串链表,left和right都可以插入添加
如果键不存在,创建新的链表
如果键已存在,新增内容
如果值全部移除,对应的键就消失了
链表对头部和尾部的操作效率极高,但对中间的元素操作的效率不高

2.6、Redis集合(Set)
单值多value,且不重复

#向集合中添加元素
	sadd set01 1 1 2 2 3 3   --当添加的元素有重复时,只会添加一个进去
#查看集合元素
	smenbers set01    ---查看集合中的所有元素
#查看某个元素是否是集合中的元素
	sismember set01 1    ---查看1是否存在于set01集合
#获取集合里面的元素个数
	scard set01     ---查看set01中的元素个数
#删除集合中元素
	srem set01 1      ---删除set01中的1
#从集合中随机取出几个数
	srandmember set01 3   ---从set01集合中随机取出3个数
#随机出栈一个值
	spop set01    ---随机移除set01中的一个元素
#将key1里的某个值赋给key2
	smove set01 set02 3     ---将set01中的3弹出添加到set02中
#差集:sdiff
	sdiff set01 set02     ---查看在set01里而不在set02里的值  set01-set02
#交集:sinter
	sinter set01 set02    ---查看set01与set02的交集
#并集:sunion
	sunion set01 set02    ---查看set01和set02的并集

2.7、R

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值