现在学习Redis还来得及么
Posted 乐哉开讲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现在学习Redis还来得及么相关的知识,希望对你有一定的参考价值。
写在前面
1
环境搭建
1
Redis 之 Docker方式安装
下载redis镜像
docker pull redis
创建实例并启动
mkdir - p /mydata/redis/ conf/
touch /mydata/redis/ conf/redis. conf
docker run - p 6379: 6379 --name redis
-v /mydata/redis/dat a:/data
-v /mydata/redis/ conf/redis. conf:/etc/redis/redis. conf
-d redis redis-server /etc/redis/redis. conf
编辑配置文件
vim /mydata/redis/ conf/redis. conf
## 复制以下内容
daemonize no
pidfile /var/run/redis.pid
port 6379
timeout 0
loglevel verbose
logfile stdout
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
appendonly yes
appendfsync everysec
no-appendfsync- on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite- min-size 64mb
slowlog- log-slower-than 10000
slowlog- max- len 1024
2
使用源码方式安装redis
下载redis安装包
wget http: //download.redis.io/releases/redis-4.0.6.tar.gz
解压压缩包
tar -zxvf redis-4 .0 .6 .tar .gz
安装gcc依赖
yum install gcc
跳转到redis解压目录下
cd redis-4 .0 .6
编译安装
make MALLOC=libc
安装
cd src && make install
启动redis
#切换到src目录下,执行以下命令
./redis-server
连接redis
./redis-cli
2
五种基本数据类型的操作与应用场景
1
string 字符串类型
基本指令
-
添加数据 -
删除数据 -
获取数据 get name -
整数 自增 # 默认自增1
incry age
#自定义自增值
incrby age -1 -
单独设置有效期,单位为秒 -
创 建key的同时设置超时时间 setex name 10 lezai -
key不存在则创建成功否则创建失败,用来实现分布式锁的基本原理 setnx name lezai
set name lezai
del name
expire name 10
应用场景
2
hash(哈希)
但是hash里面的值都只能是字符串型,而且他们的rehash方式是不一样的,redis的hash并不是一次性将全部的数据进行rehash,而是采用渐进式的方式,也就是说会存在两个相同的结构,等到就得数据全部迁移完成,才会将旧的数据结构删除,使用新的代替。
基本操作指令
-
添加数据 -
删除数据 -
获取单个字段 hget student name -
获取所有字段 hgetall student -
获取map长度
hset student name lezai age 26
hdel student name age
hlen student
hincrby student age 1
应用场景
3
list(链表)
redis的链表是一个双向链表,左右两边都可以插入和去除数据,其实redis底层存储的不仅仅是简单的链表结构,而是称之为一个快速列表的结构,在列表元素较少的时候,redis会使用一块连续的内存存储,这个结构是ziplist,成为压缩列表。
当数据内容较多的情况下才会改成quicklist,因为普通列表存储一个内容需要再存储两个额外的指针,很浪费空间,所以在数据量大的时候,才将多个压缩列表使用双向列表链接起来,组成快速列表。
基本操作指令
右边进左边出(先进先出)-队列
右边进右边出(先进后出)-栈
查询元素
#获取指定位置的元素(遍历所有元素,底层采用链表结构)
lindex datas -1[-1代表倒数第一个]
#查询指定区间元素,以下取出所有数据
lrange datas 0 -1
#截取指定区间的元素
ltrim datas 0 2
#添加列表
rpush datas 1 2 3
#获取列表长度
llen datas
#取出数据
lpop datas
#添加列表
rpush datas 1 2 4
#取出数据
rpop datas
应用场景
4
set(集合)
基本操作指令
添加数据
获取所有数据
判断元素是否存在
sismember records r1
获取集合长度
-
scard records
sadd records r1 r2
smembers records
应用场景
5
zset(有序列表)
zset可以用来存储粉丝列表,value值是用户ID,score是关注时间,我们可以对粉丝列表按照关注时间进行排序。
基本操作指令
添加数据
获取指定范围内的元素
获取指定元素的score
zscore grades zhangsan
获取元素的排名
-
zrank grades lisi
获取两个分数区间的数据
zrangebyscore grades -inf(负无穷大) inf(正无穷大) widthscores
删除指定元素
-
zrem grades zhangsan
zadd grades 100 zhangsan 99 lisi
#默认按照score升序
zrange grades 0 -1
降序排序
zrevrange grades 0 -1
扩展知识
ttl key
按照惯例,文末必推一本书,这本书我也买过纸质书,本系列所有内容都是围绕本书结合自身学习进行总结归纳的。
以上是关于现在学习Redis还来得及么的主要内容,如果未能解决你的问题,请参考以下文章
千金良方说:"我现在奉上179341字的MySQL资料包,还来得及吗?有"代码段附录和高清图!!"
2020年我国到底有多少程序员?现在学习java还来得及吗?