102.【Redis】(二)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 102.【Redis】

make install 成功

  1. redis默认安装路径 /usr/local/bin
[root@Jsxs redis-7.0.9]# cd /usr
[root@Jsxs usr]# ls
bin  games  include  java  lib  lib64  libexec  local  sbin  share  src  tmp
[root@Jsxs usr]# cd local
[root@Jsxs local]# cd bin
[root@Jsxs bin]# ls
jemalloc-config  jeprof            luajit        mcrypt    redis-benchmark  redis-check-rdb  redis-sentinel
jemalloc.sh      libmcrypt-config  luajit-2.0.4  mdecrypt  redis-check-aof  redis-cli        redis-server

  1. 在该目录下创建一个文件夹 jconfig,将redis的配置文件复制到/usr/local/bin/zlkconfig
cp /opt/redis-7.0.9/redis.conf jconfig

使用jconfig进行启动

  1. redis默认不是后台启动的,需要修改配置文件

设置密码

  1. 通过刚刚新定义在 zlkconfig 里面的配置文件启动redis服务
# 回退到bin
cd ..
# 利用 jconfi/下面的配置文件启动redis 服务端
redis-server jconfig/redis.conf
# 查看自己是否运行
netstat -anp|grep 6379
# 客户端链接redis  客户端
redis-cli -p 6379

9.全部过程

[root@Jsxs redis-7.0.9]# cd /usr
[root@Jsxs usr]# ls
bin  games  include  java  lib  lib64  libexec  local  sbin  share  src  tmp
[root@Jsxs usr]# cd local
[root@Jsxs local]# cd bin
[root@Jsxs bin]# ls
jemalloc-config  jeprof            luajit        mcrypt    redis-benchmark  redis-check-rdb  redis-sentinel
jemalloc.sh      libmcrypt-config  luajit-2.0.4  mdecrypt  redis-check-aof  redis-cli        redis-server
[root@Jsxs bin]# mkdir jconfig
[root@Jsxs bin]# cp /opt/redis-7.0.9/redis.conf j
jconfig/         jemalloc-config  jemalloc.sh      jeprof
[root@Jsxs bin]# cp /opt/redis-7.0.9/redis.conf jconfig
[root@Jsxs bin]#
[root@Jsxs bin]# cd jconfig/
[root@Jsxs jconfig]# ls
redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[1]+  Stopped                 vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vi -r redis.conf
[root@Jsxs jconfig]# ls -a
.  ..  redis.conf  .redis.conf.swp
[root@Jsxs jconfig]# rm .redis.conf.swp
rm: remove regular file '.redis.conf.swp'?
[root@Jsxs jconfig]# ls -a
.  ..  redis.conf  .redis.conf.swp
[root@Jsxs jconfig]# rm .redis.conf.swp
rm: remove regular file '.redis.conf.swp'? y
[root@Jsxs jconfig]# ls -a
.  ..  redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# vim redis.conf
[root@Jsxs jconfig]# clear
[root@Jsxs jconfig]# cd ..
[root@Jsxs bin]# pwd
/usr/local/bin
[root@Jsxs bin]# ls
jconfig          jemalloc.sh  libmcrypt-config  luajit-2.0.4  mdecrypt         redis-check-aof  redis-cli       redis-server
jemalloc-config  jeprof       luajit            mcrypt        redis-benchmark  redis-check-rdb  redis-sentinel
[root@Jsxs bin]# redis-seerver jconfig/redis.conf
-bash: redis-seerver: command not found
[root@Jsxs bin]# redis-server jconfig/redis.conf
[root@Jsxs bin]# netstat -anp|grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      1726/redis-server 1
[root@Jsxs bin]# ls
jconfig          jemalloc.sh  libmcrypt-config  luajit-2.0.4  mdecrypt         redis-check-aof  redis-cli       redis-server
jemalloc-config  jeprof       luajit            mcrypt        redis-benchmark  redis-check-rdb  redis-sentinel
[root@Jsxs bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name jsxs
OK
127.0.0.1:6379> get name
"jsxs"
127.0.0.1:6379>
  1. 查看redis进程是否开启
ps -ef|grep redis

(9)关闭Redis服务 shutdown,并通过exit退出

如果设置了密码,那么我们需要先输入密码

auth 密码

6、redis-benchmark性能测试

/usr/local/bin 文件夹下存在Redis官方提供的性能测试工具 redis-benchmark;

cd /usr/local/bin

基本命令:redis-benchmark [option] [option value]

可选参数如下所示:

测试:

100个并发连接 100000请求,实例中主机为 127.0.0.1,端口号为 6379;
 redis-benchmark -h localhost -p 6379 -c 100 -n 100000

7、Redis基础知识(必须熟练掌握)

(1).常用的基本操作命令

默认使用第0个,共16个数据库。可以使用select n切换到DB n,dbsize可以查看当前数据库的大小,与key数量相关。

通过配置文件查看数据库的数量:

select n[第几个数据库] 
• 1
# 切换到第四个数据库
127.0.0.1:6379[3]> select 4
OK
# 查看数据库的条数
127.0.0.1:6379[4]> DBSIZE
(integer) 0
127.0.0.1:6379[4]> set name jsxs
OK
127.0.0.1:6379[4]> DBSIZE
(integer) 1
# 查看数据库的个数
127.0.0.1:6379[4]> config get databases
1) "databases"
2) "16"
# 查看所有的key
127.0.0.1:6379[4]> keys *
1) "name"
# 清除目前所在数据库的
127.0.0.1:6379[4]> flushdb
OK
127.0.0.1:6379[4]> keys *
(empty array)
# 清空全部数据库的信息
flushall 

(2)Redis是单线程的,并且是基于内存操作。

所以说。redis所遇到的瓶颈并不是CPU,而是机器的内存和网络的带宽

(3)在没有接触redis之前,我们大都会有这样的误区:

  • 误区一: 高性能的服务器一定就是多线程的?
  • 误区二: 多线程(CPU上下文会切换!)一定比单线程效率高?

事实上并不完全是这样,我们的Redis是将所有的数据放在内存中。这样的话使用单线程去操作效率就是最高的,而多线程(CPU上下文会切换:耗时的操作!),对于内存系统来说,如果没有上下文切换效率就是最高的,多次读写都是在一个CPU上的,在内存存储数据情况下,单线程就是最佳的方案

正常情况下: CPU > 内存 > 硬盘

(三)、六大基本数据类型 💥

官方:

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库高速缓存消息队列代理。它支持字符串哈希表列表集合、有序集合,位图,hyperloglogs等数据类型。内置复制Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区

1、Redis-key(键值对)

127.0.0.1:6379> keys *   # 查看本数据库的全部key
(empty array)
127.0.0.1:6379> set name jsxs  # 设置key值为name,值为jsxs
OK
127.0.0.1:6379> set aege 21
OK
127.0.0.1:6379> keys *
1) "name"
2) "aege"
127.0.0.1:6379> EXISTS namE  
(integer) 0
127.0.0.1:6379> EXISTS name  # 判断key值是否存在,存在的话为1,不存在为0
(integer) 1
127.0.0.1:6379> move name 1 # 移动key值到指定的index数据库
(integer) 1
127.0.0.1:6379> select 1  # 切换到指定数据库
OK
127.0.0.1:6379[1]> keys *
1) "name"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set name jsxs
OK
127.0.0.1:6379> keys *
1) "name"
2) "aege"
127.0.0.1:6379> expire name 10  # 设置过期时间 单位是秒
(integer) 1
127.0.0.1:6379> ttl name  # 查看还剩多少秒过期  -2已经过期 -1 不会过期
(integer) -2
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> get name 
(nil)
127.0.0.1:6379> type aege   # 查看当前key的类型
string
127.0.0.1:6379> rename aege age  #修改key值得名字
OK
127.0.0.1:6379> keys *
1) "age"

更多常用的的redis命令,可以参考 redis命令手册

2、Redis-String (字符串)

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
缓存 NoSQL Redis
Redis雪崩问题
Redis雪崩问题
61 1
|
12天前
|
存储 缓存 NoSQL
介绍一下Redis
【10月更文挑战第19天】介绍一下Redis
|
25天前
|
存储 缓存 NoSQL
Redis系列
Redis系列
|
5月前
|
SQL NoSQL Redis
|
6月前
|
存储 NoSQL Redis
Redis介绍以及日常使用
​ 介绍 Redis(REmote DIctionary Server)是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、非关系类型的Key-Value数据库。它提供了多种语言的API,如Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等,使得在各种语言环境下使用Redis都变得非常方便。 Redis是一个高性能的Key-Value数据库,其性能在很大程度上补偿了如Memcached这类Key-Value存储的不足,并且在某些场景下,它还可以作为关系数据库的良好补充。它支持的数据结构类型
181 1
|
6月前
|
存储 SQL NoSQL
[Redis]——初识Redis
[Redis]——初识Redis
|
6月前
|
NoSQL 网络协议 安全
Redis系列-1.Redis浅谈
Redis系列-1.Redis浅谈
47 0
|
消息中间件 缓存 NoSQL
### 1.2 使用Redis能做什么
### 1.2 使用Redis能做什么
38 0
|
消息中间件 NoSQL 测试技术
Redis2
Redis2
126 0
|
NoSQL 关系型数据库 MySQL
Redis1
Redis1
77 0