Redis缓存

@【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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值