1、redis默认有16个数据库,默认从第0个开始,这些都可以在redis.conf里面进行查看
2、redis默认不区分大小写
3、redis.conf文件是重点
必须去GITHub进行下载,但是官方不建议你使用windows来操作Redis,原因是windows版本的Redis目前由微软公司独自维护,并且版本比较低,仅仅可用于简单的学习,国内访问GITHub也可能出现网络问题。
下载方法如下:
1、进入github搜索redis
https://github.com/microsoftarchive/redis/tags
2、进入之后
选择下载tar.gz解压即可使用
其中点击redis-server
即可启动服务,redis-cli
为模拟客户端来使用redis
1、直接搜索官网链接
https://redis.io/
2、点击download下载即可
3、将压缩包复制到linux中进行解压安装即可
命令如下:
tar -xzvf +redis 压缩包名
make (生成src文件夹)
make install 即可完成下载和安装
1、make可能会出现错误
原因可能是由于你下载的Redis版本太高,而本身linux的gcc编译器版本太低,导致编译失败
Redis的5.0版本需要gcc 4.0以上的版本
Redis的6.0版本需要gcc 5.0以上的版本 (因此不建议最新版本的Redis,或者你可以去升级最新版的gcc)
2、Ubuntu的linux系统无法访问阿里云镜像的问题,在使用apt命令进行下载的时候会出现404的情况,这个原因很可能是由于虚拟机的网络配置和阿里云镜像地址有问题,可以自行百度解决,尝试替换阿里云镜像地址。
3、不同的Linux的虚拟机系统可能下载方式不太一样。
本人将redis-conf文件复制了一份到Hconfig文件夹下面,来方便于测试,大家也可以跟着一起创建文件夹
进入你下载的redis目录下面,使用如下命令
redis-server Hconfig/redis.conf
redis-cli -p 6379 #这里的6379为端口号,可以自己到conf文件中进行修改,这里默认为6379
127.0.0.1:6379> ping
PONG
得到pong回应说明连接成功
set name cjh
get name
ps -ef|grep redis
shutdown
EXISTS key
如果存在就返回1,否则返回0
move key
成功就返回1,否则返回0
expire key time
type key
前面已经在基本命令写了set和get命令,大部分学Redis的人最常使用的就是String类型的命令
append key "aaaaa"
strlen key
incrby key len #key为设置的键 len为你要增加的步长
getrange key 开始位置 结束位置
setex(set with expire)#设置过期时间,默认已经存在
setnx(set if not exist) #如果不存在过期时间就设置过期时间,这个在分布式锁中常常使用,当key不存在时,就将key设置为value,并返回1,如果key存在,就返回0
setex key 过期time 值
setnx key 值
mset k1 k2 k3 v1 v2 v3
mget k1 k2 k3
这里k4不存在,由于msetnx是一个原子性操作,因此要么同时成功,要么同时失败
msetnx k1 v1 k4 v4
那么结果很显然就是返回0
set user:1{name:zhangsan,age:3} #设置一个user:1,对象值为json字符来保存一个对象
计数器
统计多单位的数量
粉丝数
对象缓存存储
前言:在Redis中,我们可以把list玩成栈或者阻塞队列
所有的List命令都是以L开头的
可以把list想象成一个排队的队伍,可以从前面排,也可以从后面排
LPUSH list key #从左边放
Rpush list key #从右边放
LRANGE list 开始位置 结束位置
Lpop list #移除list的第一个元素
Rpo list #移除list的最后一个元素
lindex list 1 #获取list中下标为1的元素的值
Llen list
Lrem key 数量(因为一个key可以有多个重复的) 值
Ltrim key 1 2
移除当前列表中的最后一个元素,并将它移动到新的列表中,如果新的列表没有创建会自动创建
rpoplpush + 当前列表的名字+ 新的列表的名字
将列表中指定下标的值替换为另外一个值,相当于更新操作,注意:列表需要存在,下标的值也要存在,否则都会报错
Lset list 下标 值
在列表中的某一个值的前面或者后面插入一个值
LINSERT key BEFORE|AFTER pivot value
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
小结:他实际上是一个链表,before Node after ,left,right都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了key,则为空链表,也代表不存在
在两边插入或者改动值,效率最高!中间元素,相对来说,效率会低一点
sadd key value
smembers key
sismembers key value
scard key
srem key value
SRANDMEMBER key count
spop key
smove key1 key2 value #将一个指定的值,从key1移动到key2
set 是无序不重复集合
微博,B站,共同关注(并集)
数字集合类:
*
差集 SDIFF
*
交集 SINTER
*
并集 SUNION
前言:所有的命令以H开头,跟字符串类型的差不多,本质和String类型没有太大的区别,还是一个简单的key-value
Map集合,key-Map集合! ,这个时候的这个值是一个map集合
hset myhash field1 value
hmset myhash field1 value1 field2 value2
hmget myhash field1 field2
hgetall myhash
hdel myhash field1
hlen myhash
Hexists myhash field1
hkeys myhash
Hincrby myhash field 增加/减少的值
主要的应用场景:
存储变更数据 (尤其是用户信息的保存,经常变动的信息)
hash更适合于对象的存储
String更适合字符串存储
前言:
最大的作用就是排序
zset k1 score1 v1
看下面,这里分别给三名用户 赋予不同的工资,然后按照从小到大的顺序来进行排序
这里也可以附带上值
ZRANGEBYSCORE key min max #将key的最小到最大值根据成绩进行排序
ZREVRANGE # key min max 将key的值从大到小进行排序
zrem salary xiaohong #移除rem中的元素
zcard salary #获取有序集合中的个数
zcount salary 1 2 #获取1到2的区间的数量
应用场景
set排序,存储班级成绩表,工资排序表
普通消息,1,重要消息,2,带权重进行判断
排行榜功能的实现,取Top N测试