目录
概述
Redis作为一种key/value结构的数据存储系统,为了便于对数据进行进行管理,提供了多种数据类型。然后,基于指定类型存储我们项目中产生的数据,例如用户的登陆信息,购物车信息,商品详情信息等等。
常用数据类型
基础数据结构包含字符串、散列,列表,集合,有序集合。工作中具体使用哪种类型要结合具体场景。
一、Redis初始操作
docker start redis 启动redis服务 #start单词后的redis为容器名
ps -ef | grep redis 查看启动的redis进程信息
kill -9 redis01 结束进程 #杀掉redis01这个进程
docker exec -it redis01 bash 进入redis容器 #redis01 为容器名
#exec 作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容。
redis-cli -p 6379 -a password 登陆本地redis
redis-cli -h ip -p 6379 -a password 登陆远程redis
#-a后面为password,此操作需要开启redis.conf文件中的 requirepass选项
info 查看redis信息 #查看当前redis节点的详细配置信息
clear 清空redis屏幕
exit 退出redis服务
shutdown 关闭redis服务
help 系统帮助 #help type
二、Redis数据存储操作
keys * 查看redis中的key
set key value 存储数据
get key value 获取数据
flushdb 清除当前数据库数据
flushall 清除所有数据库数据
exprie key seconds Key有效时间 #单位秒
pexprie key milliseconds Key有效时间 #单位毫秒
ttl key 查看Key的剩余时间
persist key 取消Key时长设置
type key 查看key数据类型
三、String类型常用操作
字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。基于此类型,可以实现博客的字数统计,将日志不断追加到指定key,实现一个分布式自增iid,实现一个博客的的点赞操作等 。
incr key 当前键值递增
incrby key increment 指定增长系数
decr key 当前键值递减
decrby key decrement 指定减少系数
append key value 向尾部追加值
strlen key 查看字符串长度
mset key value [key value …] 同时设置多个键值
mget key[key ...] 同时获取多个键值
四、Hash类型常用操作
散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。
hset 赋值
HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。
hget 取值
hgetall 取出key对应的所有对象
hincrby 自增 #Hash类型没有自减 可以使用 -1 ;这个函数在key不存在时会自动创建key
hmset 多个赋值
hmget 多个取值
hexists 属性是否存在
hkeys 获取字段名
hdel 删除属性
hvals 获取字段值
五、List类型常用操作
Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计。
lpush 添加(头部开始) #在key对应list的头部添加字符串元素
rpush 添加(尾部开始) #在key对应list的尾部添加字符串元素
linsert 添加(特定位置) #在key对应list的特定位置之前或之后添加字符串元素
ltrim 保留数据 #保留指定key 的值范围内的数据
del list 删除
lset 修改(指定下标) #设置list中指定下标的元素值(一般用于修改操作)
lrem 删除(指定个数) #从对应list中删除N个和value相同的元素,N>0时,按从头到尾的顺序删除
lpop 删除(头部开始) #从list的头部删除元素,并返回删除元素
rpop 删除(尾部开始) #从list的尾部删除元素,并返回删除元素
llen 查看list长度
lpos 获取指定元素下标
lindex 查看下标元素
lrange 查看元素 #例:lrange mylist2 0 -1 其中:0,-1表示查看范围从第一个元素到最后一个元素。
rpoplpush 多list操作 #从第一个list尾部移除,添加到第二个list的头部,返回移除的元素。例:rpoplpush lst1 lst1
六、Set类型常用操作
Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 添加元素
spop 移除元素 #移除并返回集合中的一个随机元素
smembers 获取内容
sismember 是否存在 #判断成员元素是否是集合的成员
scard 获取个数
smove 移动元素 #移动一个元素到另外一个集合
srem 删除元素
sunion 合并集合 #合并集合元素生成一个新的集合查看,原集合数据不变
127.0.0.1:6379> sadd set1 a
(integer) 1
127.0.0.1:6379> sadd set2 b
(integer) 1
127.0.0.1:6379> sunion set1 set2
1) "b"
2) "a"
127.0.0.1:6379> smembers set1
1) "a"
127.0.0.1:6379> smembers set2
1) "b"