@【toc】目录
#一、Redis概述:
#1.目的:
#2.介绍:
#二、Redis 安装以及初始操作
#1.安装Redis数据库:
#2.Redis 初始操作
#3.Redis 数据存储操作
#4.key 有效时间设计
#三、Redis 常用数据类型
#1.String 类型操作实践
#2.Hash 类型应用实践
#3.List类型应用实践
#4.Set类型应用实践
#一、Redis概述:
#1.目的:
在Tomcat服务器上增加本地缓存,并在外部增加分布式缓存,缓存热门数据。通过 缓存能把绝大多数请求在读写数据库前拦截掉,大大降低数据库压力。
#2.介绍:
Redis是一个key-value存储系统(官网:http://redis.io),是一个分布式缓存数据库。
#二、Redis 安装以及初始操作
#1.安装Redis数据库:
第一步:下载镜像文件 : docker pull redis
第二步:准备配置文件
创建redis配置文件目录
mkdir -p /usr/local/docker/redis01/conf
在配置文件录下创建redis.conf配置文件(这个文件一定要创建,否在我们进行目录挂载时默认生成的是一个目录)
touch /usr/local/docker/redis01/conf/redis.conf
第三步:创建redis实例并启动
sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
第四步:查看正在运行的进程 : docker ps
#2.Redis 初始操作
启动redis服务 : docker start redis (start单词后的redis为容器名)
查看启动的redis进程信息 :ps -ef | grep redis
进入redis 容器 : docker exec -it redis01 bash (redis01为容器名)
登陆redis服务
redis-cli
或者
redis-cli -p 6379
或者
redis-cli -p 6379 -a password #-a后面为password,此操作需要开启redis.conf文件中的 requirepass选项
登陆远程redis
redis-cli -h "ip地址" -p 6379
查看redis信息 : 127.0.0.1:6379> info #查看当前redis节点的详细配置信息
清楚redis 屏幕内容: clear
退出redis 服务: exit
关闭redis 服务: shutdown (关闭前自动保存内容到指定文件)
系统帮助: help & help type
#3.Redis 数据存储操作
查看redis 中的key : keys *
基于key/value形式存储数据: set test1 123
基于key获取redis中存储的数据: get test1
清除当前数据库数据: flushdb
清除所有数据库数据 : flushall
#4.key 有效时间设计
Expire (设置生效时长-单位秒):EXPIRE key seconds
例、第一步.set bomb tnt 第二步.expire bomb 10
Persist (取消时长设置) : persist bomb
pexpire (毫秒):pexpire 让key的生效时长以毫秒作为计量单位,可以做到更精确的时间控制
语法:PEXPIRE key milliseconds 例:pexpire bomb 10000
#三、Redis 常用数据类型
#1.String 类型操作实践
简介:字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。基于此类型,可以实现博客的字数统计,将日志不断追加到指定key,实现一个分布式自增iid,实现一个博客的的点赞操作等
incr / incrby : 当存储的字符串是整数时,其作用是让当前键值递增,并返回递增后的值。
例:1.set num 1 2.incr num(值返回2) 3.incryby num 2 (语法可以指定每次自增的值为2)
注:如果num不存在,则自动会创建,并且完成自增
decr / decrby : decr每次递减1 decrby key decrement 按照指定数值递减
例: 1.set num 9 2. decr num 3.decrby num 3
append :向尾部追加值。如果键不存在则创建该键 。返回值是追加后字符串的总长度。
语法:append key value 例:append test "abc" (test为key字段名)
strlen : 字符串长度,返回数据的长度,如果键不存在则返回0。
语法: strlen key 例:strlen test (test为key)
mset / mget : 同时设置 / 获取多个键值
例:1. mset a 1 b 2 c 3 2.mget a b c (结果为1,2,3)
#2.Hash 类型应用实践
简介:Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。
hset / hget :
语法结构: hset key field value / hget key field
注:hset命令不区分插入和更新操作,执行插入操作时hest命令返回1,当执行更新操作时返回0。
hmset/hmget : hmset key field value[field value...] / hmget key field [field...]
注: hgetall key field (获取当前field的所有value)
hincrby : 自增
语法:hincrby article total 5 (hincrby key field value)
hexists: 判断属性是否存在
例: hexists user username
hdel: 删除属性
例: hdel user age
hkeys / hvals : 只获取字段名hkeys 或 字段值hvals
例:hkeys person / hvals person
#3.List类型应用实践
简介:Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计。
lpush : 在key对应list的头部添加字符串元素
例: lpush mylist "world" (mylist为key,world为要添加的字符串)
注:其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
rpush : 在key对应list的尾部添加字符串元素
例: rpush mylist2 "hello"
del: 删除
例: del mylist
linsert: 在key对应list的特定位置之前或之后添加字符串元素
例:linsert mylist3 before "world" "there" (将there 添加到 world之前)
lset :设置list中指定下标的元素值(一般用于修改操作)
例:lset mylist4 0 "four" (将第一个元素的值改为four)
lrem : 从key对应list中删除count个和value相同的元素,count>0时,按从头到尾的顺序删除
例: lrem mylist5 2 "hello" (从mylist5中删除2个与hello相同的元素)
ltrim : 保留指定key 的值范围内的数据
例 : ltrim mylist8 1 -1 (保留mylist内第二个至倒数第一个之间的数据)
lpop : 从list的头部删除元素,并返回删除元素
例 : lpop mylist 从mylist头部删除元素,并将所删除元素返回
rpop : 从list的尾部删除元素,并返回删除元素
例: rpop mylist2
llen : 返回key对应list的长度
例: llen mylist5
lindex : 返回名称为key的list中index位置的元素
例 : lindex mylist5 0 返回mylist5中的第一个元素
rpoplpush : 从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值.如果第一个list是空或者不存在返回nil
例:rpoplpush lst1 lst2 将lst1尾部元素移除并且添加到lst2的头部位置
#4.Set类型应用实践
简介:Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd : 添加元素,重复元素添加失败,返回0
例:sadd name tony
smembers : 获取内容
例: smembers name
spop : 移除并返回集合中的一个随机元素
例:spop internet
scard : 获取成员个数
例 :scard name
smove : 移动一个元素到另外一个集合
例:smove bigdata internet rabbitmq 从bigdata中移动元素rabbitmq到internet中
sunion : 并集
例 : sunion internet bigdata
————————————————
版权声明:本文为CSDN博主「大小不少年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhangzhanpu/article/details/120088222