Redis使用方式

news2024/11/15 11:09:03

5b8275d77a64472a92500e358089aff3.jpg一、Redis基础部分: 

 

 

1、redis介绍与安装比mysql快10倍以上 

 

*****************redis适用场合****************

 

1.取最新N个数据的操作

 

2.排行榜应用,取TOP N 操作

 

3.需要精确设定过期时间的应用

 

4.计数器应用

 

5.Uniq操作,获取某段时间所有数据排重值

 

6.实时系统,反垃圾系统7.Pub/Sub构建实时消息系统

 

7.Pub/Sub构建实时消息系统8.构建队列系统

 

9.缓存

 

=============================================

 

SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置如下:

 

Linux 2.6, Xeon X3320 2.5Ghz.

 

stackoverflow 网站使用 Redis 做为缓存服务器。

 

同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外,重启服务会写到dump.rdb文件中)

 

 

 

1.安装: 

 

tar zxvf redis-2.6.9.tar.gz

 

cd redis-2.6.9

 

make

 

cd src && make install

 

2.移动配置文件位置(为了便于管理)

 

cd /usr/local/

 

mkdir -p /usr/local/redis/bin

 

mkdir -p /usr/local/redis/etc

 

mv /lamp/redis-2.6.9/redis.conf /usr/local/redis/etc

 

cd /lamp/redis-2.6.9/src

 

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

 

3.修改配置文件 

 

vi /usr/local/redis/etc/redis.conf

 

 

 

一、将daemonize no 中no改为yes[yes指后台运行]

 

4.启动/随机启动:

 

cd /usr/local/redis/bin

 

./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。

 

#vi /etc/rc.local #设置随机启动。

 

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

 

5.查看是否启动成功 

 

ps -ef | grep redis

 

netstat -tunpl | grep 6379#查看端口是否占用。

 

6.进入客户端/退出 

 

cd /usr/local/redis/bin

 

./redis-cli#进入

 

quit#退出

 

7.关闭redis  

 

pkill redis-server#关闭

 

./redis-cli shutdown#关闭

 

************************************Redis安全************************************

 

 

 

Redis的安全性???(由以下4种方式)

 

1.用ACL控制器安全性。

 

2.在redis.conf配置文件增加下面这一行配置,即可把redis绑定在单个接口上(但并不是只有接受这个网卡的数据)。

 

bind 127.0.0.1

 

3.给redis加上较长密码(无需要记住)

 

4.在redis.conf配置启用认证功能。

 

5.SSL代理

 

6.禁用指定命令。

 

************************************** Redis配置 **********************************************

 

daemonize 如果需要在后台运行,把该项改为yes  

 

pidfile 配置多个pid的地址 默认在/var/run/redis.pid

 

bind 绑定ip,设置后只接受来自该ip的请求

 

port 监听端口,默认为6379

 

timeout 设置客户端连接时的超时时间,单位为秒

 

loglevel 分为4级,debug、verbose、notice、warning

 

logfile 配置log文件地址

 

databases 设置数据库的个数,默认使用的数据库为0

 

save 设置redis进行数据库镜像的频率

 

rdbcompression 在进行镜像备份时,是否进行压缩

 

Dbfilename 镜像备份文件的文件名

 

Dir 数据库镜像备份的文件放置路径

 

Slaveof 设置数据库为其他数据库的从数据库

 

Masterauth 主数据库连接需要的密码验证

 

Requirepass 设置登录时需要使用的密码

 

Maxclients 限制同时连接的客户数量

 

Maxmemory 设置redis能够使用的最大内存

 

Appendonly 开启append only模式

 

以下了解即可:

 

Appendfsync 设置对appendonly.aof文件同步的频率

 

vm-enabled 是否开启虚拟内存支持

 

vm-swap-file 设置虚拟内存的交换文件路径

 

vm-max-memory 设置redis使用的最大物理内存大小

 

vm-page-size 设置虚拟内存的页大小

 

vm-pages 设置交换文件的总的page数量

 

vm-max-threads 设置VM IO同时使用的线程数量

 

Glueoutputbuf 把小的输出缓存存放在一起

 

hash-max-zipmap-entries 设置hash的临界值

 

Activerehashing 重新hash

 

*******************************************************************

 

5种数据类型:字符串、哈希、链表、集合、有序集合。

 

支持:push/pop、add/remove 、取交集、并集、差集、排序。

 

redis<===同步====>mysql

 

同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外,重启服务会写到dump.rdb文件中)

 

*******************************************************************

 

select num#选择库,默认在0库,共16个库

 

auth liweijie#授权用户所需密码(密码就是redis.conf中配置的密码)

 

flushdb#清空数据库。

 

String(字符串)类型: 

 

set name lijie#设置键name的值为lijie

 

get name#获取name的值。

 

keys *#查询所有的键。

 

setnx name liweijie#如果键已存在则返回0,不更新,防止覆盖。

 

setex haircolor 10 red #设置键的值的有效期为10秒。

 

setrange email 6 lampbre.com#替换键的值从第6个字符开始换为lampbre.com

 

mset name1 李大伟 name2 李小伟#设置多个键的值。

 

msetnxname1 张三 name3 李四#判断键是否存在,不存在则设置,否则不设置返回0

 

mget name1 name2 name3#一次获取多个键的值。

 

getset name1 Tom#重新设置键的值,并返回旧的键值。

 

getrange email 6 18#截取email键的值,从第6-18位间的字符。

 

incr uid#每次自增1 (如果key中uid不存在,则设置并从0开始,下同)

 

incrby uid 5#每次自增5 

 

incrby uid -5#每次自减5 

 

decr uid #每次自减1

 

decrby uid 5#每次自减5

 

appendname1 @126.com#给name1的值,添加字符串@126.com

 

strlenname1#返回键name1的值的长度。

 

*************************************************************************

 

Hashes(哈希)类型: 

 

hset user:001 name liweijie#哈希设置用户user:001的name键值为liweijie

 

hset user:001 age 21#同样,增加一个age键值为21

 

hsetnx user:001 age 22#同上,但检测键是否存在。若不存在创建。

 

hmset user:002 name liweijie2 age 26 sex 1#同时设置多个键的值。

 

hget user:001 name#哈希获取用户user:001的name键的值。

 

hget user:001 age #同上。

 

hmget user:001 name age sex#获取多个指定的键的值。

 

hgetall user:001#获取所有键的值。

 

hincrbyuser:001 age -8#在指定键上加上给定的值。

 

hexists user:001 sex#检测指定的键值是否存在。

 

hlen user:001#返回指定哈希的键个数/字段个数。

 

hdel user:001 sex#删除指定(user:001)哈希的指定字段或是键值。

 

hkeys user:003#返回哈希里所有字段或是键值。

 

*********************************************************************

 

Lists(链表)类型及操作(棧或队列): 

 

lpush mylist "world"#从头部插入字符串

 

lpush mylist "hello"#同上

 

lrange mylist 0 -1#获取从0到最后一个如[1) "hello" 2) "world"]

 

rpush mylist "jiejie"#在尾部插入

 

linsert mylist before "hello" "this is linsert" #指定插入位置(在hello之前插入)。

 

lset mylist 0 "what"#设置修改指定下标的值。

 

lrem mylist 1 "hello"#删除(1个)一个值为hello的元素。(n<0从尾部删除,n=0全部删除)

 

ltrim mylist 1 2 #保留表中下标为1/2的元素。

 

lpop mylist#弹出开头元素并返回。

 

rpop mylist#弹出尾部元素并返回。

 

rpoplpush mylist mylist2 #从mylist尾部弹出插入到mylist2的头部。

 

lindex mylist 0#获取表下标为0的元素值。

 

llen mylist#返回表元素个数(相当于count($arr ))。

 

*********************************************************************

 

sets(集合)类型及操作(好友推荐、blog、tag功能): 

 

smembers myset#查看myset集合中所有元素值。

 

sadd myset "hello"#向mysets集合中添加一个值hello

 

srem myset "hello"#删除myset集合中名称为hello的元素。

 

spop myset #随机弹出并返回mysets中的一个元素。

 

sdiff myset2 myset3#返回myset2中的与myse

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源、低成本的 Xilinx FPGA 下载器(高速30MHz)

目前主流的Xilinx下载器主要有两种&#xff1a;一种是Xilinx官方出品的Xilinx Platfom Cable USB&#xff0c;还有一个就是Xilinx的合作伙伴Digilent开发的JTAG-HS3 Programming Cable。 JTAG-HS系列最大支持30MHz下载速度&#xff0c;基于FTDI的FT2232方案。 JTAG-HS系列对比…

ipv6上网配置

一般现在的宽带都已经支持ipv6了&#xff0c;但是需要一些配置才能真正用上ipv6。记录一下配置过程。 当前测试环境为移动宽带&#xff0c;光猫下面接了一个路由器&#xff0c;家里所有的设备都挂到这个路由器下面的。 1. 光猫改桥接 光猫在使用路由模式下&#xff0c;ipv6无…

一款针对EF Core轻量级分表分库、读写分离的开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 在项目开发中&#xff0c;如果数据量比较大&#xff0c;比如日志记录&#xff0c;我们往往会采用分表分库的方案&#xff1b;为了提升性能&#xff0c;把数据库查询与更新操作分开&#xff0c;这时候就要采用读写…

谈谈SpringBoot(三)

1. SpringBoot依赖管理 1.1 父依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.8</version><relativePath/></parent> 点击进去&#xf…

Redis中的hash结构和扩容机制

1.rehash原理 hash包含两个数据结构为字典数组ht[0]和ht[1]。其中ht[0]用来存放数据&#xff0c;ht[1]在rehash时使用。 扩容时&#xff0c;ht[1]的大小为第一个大于等于ht[0].used*2的2的幂次方的数&#xff1b; 收缩时&#xff0c;ht[1]的大小为第一个大于等于ht[0].used的…

大数据时代的小数据神器 - asqlcell

自从Google发布了经典的MapReduce论文&#xff0c;以及Yahoo开源了Hadoop的实现&#xff0c;大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下&#xff0c;数据分析开始从过去的采样抽查变成全量整体&#xff0c;原先被抽样丢弃的隐藏…

【Java开发笔记】线程池

【Java开发笔记】线程池 线程池 ThreadPoolExecutor 的七大核心参数&#xff1a; 核心线程数 corePoolSize最大线程数 maxinumPoolSize超过核心线程数的闲余线程存活时间 keepAliveTime存活时间单位 unit:keepAliveTime任务队列&#xff08;阻塞队列&#xff09; workQueue生…

内网渗透(二十)之Windows协议认证和密码抓取-域认证(Kerberos协议)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

【LeetCode】1138. 字母板上的路径

1138. 字母板上的路径 题目描述 我们从一块字母板上的位置 (0, 0) 出发&#xff0c;该坐标对应的字符为 board[0][0]。 在本题里&#xff0c;字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”]&#xff0c;如下所示。 我们可以按下面的指令规…

Spring Security in Action 第一、二章 第一个Spring Security项目的建立以及基本

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;以实战为线索&#xff0c;逐步深入SpringSecurity相关知识相关知识&#xff0c;打造完整的SpringSecurity学习步骤&#xff0c;提升工程化编码能力和思维能力&#xff0c;写出高质量代码。希望大家都能够从中有所收获&#…

Docker 搭建本地私有仓库

一、搭建本地私有仓库有时候使用Docker Hub这样的公共仓库可能不方便&#xff0c;这种情况下用户可以使用registry创建一个本地仓库供私人使用&#xff0c;这点跟Maven的管理类似。使用私有仓库有许多优点&#xff1a;1&#xff09;节省网络带宽&#xff0c;针对于每个镜像不用…

小灰的算法之旅---createBinaryTree 的一点点疑问

前言 深知自己算法薄弱&#xff0c;所以最近在补充自己算法方面的知识&#xff0c;《小灰的算法之旅》这本书作为入门书籍不错&#xff0c;当时在看到《树-深度优先遍历》的代码时&#xff0c;我碰到了一点疑问&#xff0c;经过我多次代码验证&#xff0c;确实是代码不太严谨。…

C语言基础(有基础)

linux下的 是一种通用的、面向过程式的计算机编程语言 #include <stdio.h> //#include 预处理命令&#xff0c;用来引用头文件&#xff0c; stdio.h 头文件 int main() //开始 {/* 一个注释 */printf("Hello, World! \n");return 0; …

docker安装mysql

在安装Mysql之前&#xff0c;我们可以先查看一下我们的镜像&#xff0c;输入命令&#xff1a; docker images 能发现&#xff0c;镜像里面只有一个Nginx&#xff0c;并没有Mysql 然后我们可以像上一篇安装Nginx一样&#xff0c;安装Mysql镜像。 输入以下命令&#xff0c;安装…

B站Python与OpenCV人脸识别项目超详细记录(对图片、视频、摄像头人脸的检测)

课程来源&#xff1a;一天搞定人脸识别项目&#xff01;学不会up直接下跪&#xff01;&#xff08;pythonopencv&#xff09;_哔哩哔哩_bilibili 图片来源&#xff1a;感谢王鹤棣先生友情出镜~ 环境配置详见&#xff1a; 在conda虚拟环境中安装OpenCv并在pycharm中使用_cond…

已解决io.UnsupportedOperation: not readable

已解决Python读取文件报错&#xff1a;io.UnsupportedOperation: not readable亲测有效 文章目录报错问题报错翻译报错原因解决方法联系博主免费帮忙解决报错报错问题 一个小伙伴遇到问题跑来私信我&#xff0c;想用Python读取文件&#xff0c;但是发生了报错&#xff08;当时他…

跟同事杠上了,Apache Beanutils为什么被禁止使用?

收录于热门专栏Java基础教程系列&#xff08;进阶篇&#xff09; 在实际的项目开发中&#xff0c;对象间赋值普遍存在&#xff0c;随着双十一、秒杀等电商过程愈加复杂&#xff0c;数据量也在不断攀升&#xff0c;效率问题&#xff0c;浮出水面。 问&#xff1a;如果是你来写…

Redis过期删除策略

目录引出Redis过期删除策略Redis的两种过期策略&#xff1a;定期删除 惰性删除定期删除惰性删除Redis两种过期删除策略存在的问题Redis缓存淘汰策略Redis中的LRU和LFU算法1、LRU&#xff08;Least Recently Userd最近最少使用&#xff09;LFU 算法的引入2、LFU&#xff08;lea…

Netty 组件学习

Netty 组件学习Netty 各个组件通俗理解EventLoopEventLoopGroup关闭ChannelFuture & PromiseHandler & PipelineByteBuf创建直接内存和堆内存池化和非池化组成方法扩容机制读取retain和release方法Netty 各个组件通俗理解 Channel即数据通道 Msg是数据&#xff0c;传…

对KMP简单的理解

声明&#xff1a;下边的例子均表示下标从1开始的数组 ne数组的定义&#xff1a; next[i] 就是使子串 s[1…i] 有最长相等前后缀的前缀的最后一位的下标。ne[i]也可以表示相等子串的长度 准备执行jne[j]时&#xff0c; 表示当前s[i]!p[j1] , 如果ne[j]1 &#xff0c;那么下…