redis安装(Linux)、启动、退出、设置密码、远程连接

2.1 安装redis

下载redis安装包(如:redis-2.8.17.tar.gz)

tar -zxvf redis-2.8.17.tar.gz
cd redis-2.8.17
make
sudo make install

2.2 后台启动服务端

nohup redis-server &

:redis-server默认启动端口是6379,没有密码

如果不使用默认配置文件,启动时可以加上配置文件

nohup redis-server  ~/soft/redis-2.8.17/redis.conf &

2.3 启动客户端、验证

127.0.0.1:6379> ping
PONG

127.0.0.1:6379> set var "hello world"
OK
127.0.0.1:6379> get var
"hello world"

2.4 退出

关闭redis-server

redis-cli shutdown

例子

$ps -ef | grep redis
root     23422 19813  0 10:59 pts/5    00:00:08 redis-server *:6379

$sudo redis-cli  shutdown
[23422] 05 Mar 12:11:29.301 # User requested shutdown...
[23422] 05 Mar 12:11:29.301 * Saving the final RDB snapshot before exiting.
[23422] 05 Mar 12:11:29.314 * DB saved on disk
[23422] 05 Mar 12:11:29.314 # Redis is now ready to exit, bye bye...
[1]+  Done                    sudo redis-server  (wd: ~/soft/redis-2.10.3)
(wd now: ~/soft/redis-2.8.17)

$ps -ef | grep redis
jihite 30563 19813  0 12:11 pts/5    00:00:00 grep redis

:如果设置上密码后,单纯的redis-cli是关不掉的,必须加上ip、port、passwd

sudo redis-cli -h host -p port -a passwd shutdown

退出客户端

localhost:6379> QUIT

2.5 设立密码

打开redis.conf找到requirepass,去掉默认,修改

requirepass yourpassword

验证密码的正确性

localhost:6379> auth jihite
OK

2.6 远程连接

需要已经安装redis,可以使用redis-cli命令

redis-cli -h host -p port -a password

2.7 查看redis-server统计信息

INFO

3. Reis key

Redis是key-value的数据库,Redis的键用于管理Redis的键,基本语法是

COMMAND KEY_NAME

例子:

localhost:6379> SET var redis
OK
localhost:6379> GET var
"redis"
localhost:6379> DEL var
(integer) 1
localhost:6379> GET var
(nil)

:redis命令不区分大小写,所以get var和GET var是等价的

4. Redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

4.1 String(字符串)

  • 是Redis最基本的数据类型,可以理解成与Memcached一模一样的类型,一个key对应一个value
  • 二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象
  • 一个键最大能存储512MB

例子

127.0.0.1:6379> set var "String type"
OK
127.0.0.1:6379> get var
"String type"

说明:利用set给变量var赋值“String type”;利用get获得变量var的值

4.2 Hash(哈希)

  • 是一个键值对集合
  • 是一个string类型的field和value的映射表,hash特别适合用于存储对象

hset,hget

127.0.0.1:6379> hget set1 name
"jihite"
127.0.0.1:6379> hget set1 score
"100"
127.0.0.1:6379> hset set2 name jihite2
(integer) 1
127.0.0.1:6379> hset set2 score 110
(integer) 1
127.0.0.1:6379> hget set1 name
"jihite"

hset&hget一次只能往哈希结构里面插入一个键值对,如果插入多个可以用hmset&hmget

hmset, hmget例子

例子

127.0.0.1:6379> HMSET var:1  name jihite school pku
OK

127.0.0.1:6379> HGETALL var:1
1) "name"
2) "jihite"
3) "school"
4) "pku"

说明

var:1是键值,每个 hash 可以存储 232 - 1 键值对(40多亿)

HMSET用于建立hash对象,HGETALL用于获取hash对象

hset v.s. hmset操作对比

127.0.0.1:6379> hset set5 name1 jihite1 name2 jihite2 name3 jihite3
(error) ERR wrong number of arguments for ‘hset‘ command
127.0.0.1:6379> hmset set5 name1 jihite1 name2 jihite2 name3 jihite3
OK
127.0.0.1:6379> hget set5 name1
"jihite1"
127.0.0.1:6379> hmget set5 name1
1) "jihite1"
127.0.0.1:6379> hmget set5 name1 name2
1) "jihite1"
2) "jihite2"
127.0.0.1:6379> hget set5 name1 name2
(error) ERR wrong number of arguments for ‘hget‘ command

4.3 LIST(列表)

例子

127.0.0.1:6379> lpush lvar 1
(integer) 1
127.0.0.1:6379> lpush lvar a
(integer) 2
127.0.0.1:6379> lpush lvar ab
(integer) 3

127.0.0.1:6379> lrange lvar 0 1
1) "ab"
2) "a"
127.0.0.1:6379> lrange lvar 0 10
1) "ab"
2) "a"
3) "1"
127.0.0.1:6379> lrange lvar 2 2
1) "1"

说明

lpush往列表的前边插入;lrange后面的数字是范围(闭区间)

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

4.4 Set(集合)

Redis的Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

例子

127.0.0.1:6379> sadd setvar redis
(integer) 1
127.0.0.1:6379> sadd setvar mongodb
(integer) 1
127.0.0.1:6379> sadd setvar mongodb
(integer) 0
127.0.0.1:6379> sadd setvar rabbitmq
(integer) 1
127.0.0.1:6379> smembers setvar
1) "rabbitmq"
2) "redis"
3) "mongodb"

说明

set往集合中插入元素,smembers列举出集合中的元素

成功插入返回1;错误插入返回0,例子中mongodb第二次插入时,因已经存在,故插入失败。

4.5 zset(sorted sete:有序集合)

zset和set一样也是String类型的集合,且不允许元素重复

zset和set不同的地方在于zset关联一个double类型的分数,redis通过分数对集合中的元素排序

zset的元素是唯一的,但是分数是可以重复的

例子

127.0.0.1:6379> zadd zvar 1 redis
(integer) 1
127.0.0.1:6379> zadd zvar 1 redis
(integer) 0
127.0.0.1:6379> zadd zvar 2 redis
(integer) 0
127.0.0.1:6379>
127.0.0.1:6379> zadd zvar 2 mongo
(integer) 1
127.0.0.1:6379> zadd zvar 0 rabbitmq
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> ZRANGEBYSCORE zvar 0 1000
1) "rabbitmq"
2) "mongo"
3) "redis"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> zadd zvar -2 celery
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE zvar 0 1000
1) "rabbitmq"
2) "mongo"
3) "redis"
127.0.0.1:6379> ZRANGEBYSCORE zvar -3 1000
1) "celery"
2) "rabbitmq"
3) "mongo"
4) "redis"

说明

成功插入返回1,否则返回0。插入已存在元素失败--返回0

分数为float(可正、负、0)

回到顶部

5. Redis HyperLogLog

Redis HyperLogLog是用来做基数统计的算法。优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

:因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,因此不会返回输入的各个元素。

基数是什么? 对于["abc", "abc", "2", "3"],基数是["abc", "2", "3"],个数是3.

例子

localhost:6379> pfadd jsh redis
(integer) 1
localhost:6379> pfadd jsh redis
(integer) 0
localhost:6379> pfadd jsh mongodb
(integer) 1
localhost:6379> pfadd jsh rabbitmq
(integer) 1
localhost:6379> pfcount jsh
(integer) 3
localhost:6379> pfadd jsh2 redis
(integer) 1
localhost:6379> pfadd jsh2 a
(integer) 1
localhost:6379> pfcount jsh2
(integer) 2

localhost:6379> pfmerge jsh jsh2
OK
localhost:6379> pfcount jsh
(integer) 4
localhost:6379> pfcount jsh2
(integer) 2

说明:

  • pfadd key ele [ele2 ...]:添加指定元素到HyperLogLog中,
  • pfcount key: 返回给定HyperLogLog的基数估算值
  • pfmerge destkey srckey [srckey2....]:讲多个HyperLogLog合并到一个第一个HyperLogLog中

回到顶部

6. Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

Redis 客户端可以订阅任意数量的频道。

原理:下图展示了三个客户端client1, client2, client5订阅了频道channel1

当有新消息通过PUBLISH发送给channel1时,这时候channel1就会把消息同时发布给订阅者

例子

创建订阅频道redisChat

localhost:6379> subscribe redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1

打开几个客户端,订阅channel redisChat

localhost:6379> psubscribe redisChat
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "redisChat"
3) (integer) 1

然后给channel redisChat发送消息“Hello World”

localhost:6379> publish redisChat "Hello World"
(integer) 1

客户端会收到消息

Reading messages... (press Ctrl-C to quit)
1) "pmessage"
2) "redisChat"
3) "redisChat"
4) "Hello World"

7. Redis事务

事务是一个单独的操作集合,事务中的命令有顺序,是一个原子操作(事务中的命令要么全部执行,要么全部不执行),执行一个事务中的命令时不会被其他命令打断。

一个事务从开始到结束经过以下三个阶段:

  • 开始事务
  • 命令入队
  • 执行事务

例子

localhost:6379> MULTI
OK
localhost:6379> set name jihite
QUEUED
localhost:6379> get name
QUEUED
localhost:6379> sadd language "c++" "python" "java"
QUEUED
localhost:6379> smembers language
QUEUED
localhost:6379> exec
1) OK
2) "jihite"
3) (integer) 3
4) 1) "java"
   2) "python"
   3) "c++"

说明:事务以MULTI开始,以EXEC结束

8. Redis脚本

Redis 脚本使用 Lua 解释器来执行脚本。执行脚本的常用命令为 EVAL。基本语法

EVAL script numkeys key [key ...] arg [arg ...]

例子

localhost:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"

9. 数据备份与恢复

数据备份

localhost:6379> save
OK

改命令会在redis的安装目录中创建文件dump.rdb,并把数据保存在该文件中。

查看redis的安装目录

localhost:6379> config get dir
1) "dir"
2) "/home/jihite/soft/redis-2.8.17"

数据恢复

只需将备份文件dump.rdb拷贝到redis的安装目录即可。

10. 数据库操作

Redis中,一共有16个数据库,分别是0~15,一般情况下,进入数据库默认编号是0,如果我们要进入指定数据库,可以用select语句

切换到编号为3的数据库

localhost:6379> select 3
OK
localhost:6379[3]>

查看数据库中所有的键值

localhost:6379[1]> set a 1
OK
localhost:6379[1]> set  b 2
OK
localhost:6379[1]> keys *
1) "b"
2) "a"

返回当前数据库中所有key的数目:  dbsize

删除当前数据库中的所有key:   flushdb

清空所有数据库中的所有key:   flushall

把当前数据库中的key转移到指定数据库:move a aim_db,

例:

localhost:6379[1]> set z sss
OK
localhost:6379[1]> move z 0
(integer) 1
localhost:6379[1]> select 0
OK
localhost:6379> get z
"sss"

11.关闭持久化

数据持久化是Redis不同于其他缓存的一个特性,具有明显的有点。但如不希望持久化数据,只作为普通的缓存用,如memcache

方法:

修改配置文件,改完后重启。

#save 900 1
#save 300 10
#save 60 10000 

或执行操作命令

CONFIG SET save ""

原文地址:https://www.cnblogs.com/Essaycode/p/10035699.html

时间: 2024-10-11 10:50:22

redis安装(Linux)、启动、退出、设置密码、远程连接的相关文章

Redis安装,启动、设置密码

windows版本redis下载地址:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100 linux版本下载地址:https://redis.io/ 在此只介绍windows下redis的安装 首先在Redis-x64-3.2.100的安装目录下输入cmd,输入以下命令,启动redis服务器 redis-server.exe 启动成功后,可以页面看到如下所示 再打开另一个终端,输入以下命令,这是无密码进入redis

Linux 入门 1 (vm虚拟机安装openSUSE 11,SecureCRT远程连接)

Linux版本: openSUSE-11.0-GNOME-LiveCD-i386.torrent ,(680M)下载地址:http://ftp5.gwdg.de/pub/opensuse/discontinued/distribution/11.0/iso/torrent/ 安装都是默认的,设的硬盘大小是8G,内存1G,网络连接时桥接,分区挂载都是快速安装默认的,自己没修改. 安装好后,ifconfig查看suse的ip为192.168.1.103,而物理机(笔记本)是192.168.1.100

linux 安装jdk,tomcat 配置vsftp 远程连接

不知不觉入行也有一年了,这两天在公司上班有空了就自己装了个vmware虚拟机,装了个红帽6.1完全命令行的操作系统,想着搭个公司现在在用的测试环境,没想到中间碰到了很多问题,不过大部分都解决了,现在可以达到自行上传项目等等操作,在这里把这两天学习的东西记录一下,防止记忆丢失. 一开始,要下载安装虚拟机,我选的是vmware,当然你也可以选择别的虚拟机,比如virtualBox等,虚拟机只是用来装操作系统的一个工具而已,当然vmware可能更强大一些,但是对于我们现在做的操作,随便一个工具就可以.

轻松,阿里云云服务器上安装mysql5.6,解决远程连接失败问题

最近刚接触linux操作系统,买了个阿里云服务器,centos7系统,装mysql数据库网上查看了别人的博客,方法都不太一样,自己也试了几个,结果都没有成功. 后来搜索发现阿里云安装mysql跟有专门的方法,我把云服务器磁盘初始化之后,重新安装,然后试了真的安装成功了,希望这篇博文能帮助以后在阿里云上安装mysql的朋友,不用再走我走过的弯路.以下是我测试安装成功的步骤,命令也可以直接复制粘贴.我看到链接地址:https://jingyan.baidu.com/article/454316ab6

Redis学习笔记(1)Redis安装和启动

前言 作为一个开发者,一直想跟进一下大数据和云计算的步伐. 因此打算开始学习云计算和分布式数据的各种内容,先从Redis开始. Redis是Remote Dictionary Server的缩写,最初是开发用来作为数据库使用的工具. 在Linux下安装Redis非常简单 在终端运行以下命令 wget http://download.redis.io/redis-stable.tar.gz tar zxf redis-stable.tar.gz cd redis-stable.tar.gz mak

Centos上安装mysql配置并授权远程连接

1.通过yum来进行mysql安装 查看yum上提供的mysql数据库可下载的版本: yum list | grep mysql 通过yum install -y mysql-server mysql mysql-deve命令将mysql mysql-server mysql-devel都安装好,出现如下信息标识mysql安装成功: 2.初始化及相关配置 通过service mysqld start命令启动mysql 通过mysqladmin -u root password 'root'给ro

centos7通过yum安装mysql,并授权远程连接

安装: CentOS 7的yum源中没有正常安装MySQL的mysql-sever文件,需要去官网上下载(通过安装mysql的yum容器,再通过yum安装mysql) 注:安装前,需要卸载所有的mariadb软件(完全兼容mysql的另一个数据库,mysql原创者所写),通过命令yum remove mariadb* 获取yum地址: 安装mysql的yum容器: 其实就是在/etc/yum.repo.d/  下添加了两个容器档案: 查看那个yum容器有什么mysql软件(yum install

Linux系统MySQL开启远程连接

远程连接服务器上的MySQL. Navicat软件连接数据库报错:2003-can't connect to MYSQL serve 工具/原料 crt.navicat.Linux系统.MySQL. 方法/步骤 远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码).   创建用户用来远程连接 GRANT ALL PRIVILEGES ON *.* TO 'itoffice'@'%' IDENTIFIED BY 'itoffi

CentOS7.2安装VNC,让Windows远程连接CentOS 7.2 图形化界面

需求及说明 开发老大突然心血来潮,让实现在windows下通过vnc实现连接到CentOS系统的图形化界面,这里实践CentOS7.2下安装VNC,让Windows远程桌面Linux解决了不少问题,写个实际操做,如果你们碰到同样的问题,就可以迅速解决,无需头疼甚至放弃了. 说明:这里的系统为CentOS 7.2的图形化界面系统, 开始操作 1.安装安装X-Window # yum check-update # yum groupinstall "X Window System" # y

redis安装与启动

安装简介: 在安装redis前需要了解redis官方发布时的版本规则,redis官方约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版(如2.8版,3.0版),奇数版本则为非稳定版本(如2.7版,2.9版),在生产环境下一般推荐使用稳定的版本. Windows系统下安装redis: 介绍:首先redis官方是不支持Windows的,2011年微软向redis提交了一个补丁,以使redis可以在Windows下编译运行,但是被Salvatore Sanfilippo拒绝了,原因是在服务器领