目录
1、redis下载安装–ubuntu环境
中文官网:http://www.redis.cn/
# 将下载后的压缩包上传到linux上,执行下面命令解压缩文件。
tar -zxvf 压缩包名字
# 编译redis。redis是由C语言编写的因此编译redis需要gcc编译器,先安装gcc编译器以及make
sudo apt install build-essential
# 使用make编译
make
sudo make install
# redis的默认安装路径在/usr/local/bin 如下图所示
2、使用redis
redis默认是在前台运行的,可以修改配置文件让其作为守护进程运行,配置文件就在解压的目录中,为redis.conf。打开配置文件,找到daemonize选项,将其value改为yes。
2.1 启动redis:
# redis启动
redis-server 配置文件路径
# 例如 redis-server /home/mgh/redis/redis-6.0.6/redis.conf
启动成功:
# 查看redis进程,可以看到redis的监听端口为6379
ps -ef | grep redis
2.2 连接redis:
# 使用redis-cli连接redis
redis-cli
# 也可以通过-p参数指定端口
redis-cli -p 6379
# 连接后可以输入ping命令来测试连接,redis会回复pong:
2.3 关闭redis服务
# 连接redis后,输入shutdown命令来关闭redis服务:
3、redis基础命令
redis默认有16个数据库,默认使用0号数据库。可以从配置文件查看:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCupT0z9-1636891188268)(F:\desktop\笔记\redis学习笔记.assets\image-20211022210742819.png)]
# 使用select+索引来切换数据库,0~15
select 3
# 查看数据库大小
dbsize
# 查看数据库所有的键
keys *
# 清空当前数据库
flushdb
# 情况所有数据库
flushall
3.1 redis-key
# 查看所有的键
keys *
# 设置键值对
set key value
# e.g.
set name zhangsan
# 根据键获取值
get key
# 判断键是否存在,存在返回1,否则返回0
exist key
# 将键值对移动到其它数据库
move key 数据库名
move name 1 # 将name移动到1号数据库
# 设置过期时间
expire key timeout
expire name 10 # 设置过期时间为10s
# 查看过期时间
ttl key
ttl name # 查看name的过期时间
# 查看类型
type key
3.2 String(字符串)
# 1.追加字符串,如果key不存在则新建,就相当于set key
append key value 返回追加后的长度
# e.g.
append name "666"
# 2.获取字符串长度
strlen key
# 3.值自增1 相当于i++
incr key
# 值自减1
decr key
# 4.值自增/自减指定步长 相当于 i += step
incrby/decrby key step
#e.g.
incrby views 10
# 5.字符串截取,从0开始,[start, end]闭区间
getrange key start end
# 6.字符串替换
setrange key offset value
# 6.设置值并指定过期时间 set expire
setex key seconds value
# 如果不存在则设置 set if not exist
setnx key value
# 7.批量设置、批量获取
mset key1 val1 key2 val2 ...
mget key1 key2 ...
# 8.如果不存在批量设置。原子操作,要么一起成功,要么一起失败
msetnx key1 val1 key2 val2 ...
# 设置一个对象,可以通过下面的方式: user:1 作为键 {name:zhangsan,age:3}作为值
set user:1 {name:zhangsan,age:3}
# 9.先获取再设置
getset key value
3.3 List(列表)
再redis中可以使用List作为栈(lpush lpop 或 rpush rpop)或队列(lpush rpop 或 rpush lpop)。
List是一个双向链表,在两端插入或删除的效率最高。
# 1.添加数据
lpush key ele1 ele2 ... # 从左向右添加
rpush key ele1 ele2 ... # 从右向左添加
# 2.弹出值(获取值并删除)
lpop key # 从左弹出
rpop key # 从右弹出
# 3.遍历list
lrange key start end
#e.g. 遍历整个list
lrange key 0 -1
# 4.根据索引获取值
lindex key index # 从左根据索引获取值,索引从0开始
# 5.获取列表长度
llen key
# 5.移除集合中指定个数的value
lrem key count value
# 6.截断集合,闭区间
ltrim key start stop
# 7.移除列表最后一个元素并将其移动到新的列表
rpoplpush sourkey deskey
# 8.更新值,根据下标替换指定的值,如果列表不存在或要替换的下标没有元素则报错
lset key index ele
# 9.插入值,在pivot之前或之后插入ele
linsert key BEFORE|AFTER pivot ele
3.4 Set(集合)
set中的值是不能重复的。
# 1.添加值
sadd key ele1 ele2 ...
# 2.判断是否在集合中
sismember key ele
# 3.获取set集合中元素的个数
scard key
# 4.移除元素
srem key ele
# 5.遍历集合
smembers key
# 6.随机抽选指定个数的元素,不指定数量则抽选一个
srandmember key [count]
# 7.随机删除指定个数的元素
spop key [count]
# 8.获取多个个集合的差集
sdiff key1 [key2...]
# 9.求多个集合的交集
sinter key1 [key2...]
# 10.求并集
sunion key1 [key2...]
3.5 Hash(哈希)
Map集合,key-map,也就是k-v中v保存的是一个map。
# 1.添加k-v
hset key field value [field value...]
hmset key field value [field value...]
# 2.根据字段获取值
hget key field
hmget key field1 [field2...]
# 3.获取hash长度
hlen key
# 4.获取所有键值
hgetall key
# 5.判断是否存在
hexists key field
# 6.获取所有的键或值
hkeys key
hvals key
3.6 Zset(有序集合)
# 1.添加元素
zadd key score ele [score ele...]
#e.g.
zadd salary 5000 zhangsan
zadd salary 8000 laoli
# 2.遍历集合
zrange key start end # 从小到大排序
zrevrange key start end # 从大到小排序
# 3.移除元素
zrem key ele [ele]
# 4.获取集合中元素个数
zcard key
3.7 Hyperloglog
Hyperloglog可以用来计算不重复的元素个数,可以用来统计网站的访问数等(一个人访问多次仍然记为一次)。有0.81%的错误率。
# 添加元素
pfadd key ele [ele...]
#e.g.
pfadd views a b c d e a f c g h
# 统计数量
pfcount key
#e.g.
# 127.0.0.1:6379> pfcount views
# (integer) 8
# 合并集合
pfmerge deskey sourkey1 sourkey2 ...