首页 > 其他 > 详细

Redis-基础

时间:2021-01-16 22:03:03      阅读:45      评论:0      收藏:0      [点我收藏+]

Redis


一、NOSQL概念

1、RDBMS

  • 关系数据库管理系统
  • Relational DataBase Management System
  • 按照预先设置的组织结构(即先定义表结构、建表),将数据存储在物理介质上
  • 数据之间可以做关联操作

2、NoSQL

  • 非关系型数据库(Not Only SQL)
  • 意为:不仅仅是 SQL
  • 不需要预先定义数据存储结构
  • 每条记录可以有不同的数据类型和字段个数


二、Redis

1、介绍


  • REDIS:Remote Dictionary Server (远程字典服务器)
  • 是一款高性能的(Key / Values)分布式内存数据库
  • 支持数据持久化(定期把内存里的数据存储到硬盘)
  • 支持多种数据类型:string、list、hash、... ...
  • 支持 master - slave 模式数据备份
  • 中文网站:www.redis.cn

2、安装

  • 源码编译安装
yum -y install gcc 
tar -xf redis-4.0.8.tar.gz
cd redis-4.0.8
make && make install
  • 初始化配置
]$ cd redis-4.0.8
]# ./utils/install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379                               # 端口号
Config file    : /etc/redis/6379.conf               # 配置文件目录
Log file       : /var/log/redis_6379.log            # 日志目录
Data dir       : /var/lib/redis/6379                # 数据库目录
Executable     : /usr/local/bin/redis-server        # 启动程序的目录
Cli Executable : /usr/local/bin/redis-cli           # 命令行的连接工具
Is this ok? Then press ENTER to go on or Ctrl-C to abort.       # 回车完成配置
Copied /tmp/6379.conf => /etc/init.d/redis_6379                 # 服务启动脚本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...                            # 提示服务已经启动
Installation successful!                            # 提示安装成功

-------------------------------------------------------------------------------
端口:6379
主配置文件:/etc/redis/6379.conf
日志文件:/var/log/redis_6379.log
数据库目录:/var/lib/redis/6379
服务启动程序:/usr/local/bin/redis-server
命令行连接命令:/usr/local/bin/redis-cli

3、启、停

]$ /etc/init.d/redis_6379 start         # 启服务
]$ /etc/init.d/redis_6379 stop          # 停服务

]$ ps -C redis-server                   # 查看进程
]$ ss -atunp | grep 6379                # 查看端口

4、常用命令

]# redis-cli
127.0.0.1:6379> ping                    # ping 结果为 PONG 则为正常。
PONG

  • 常用命令
> set key名 key值              # 存储1个值
> mset key名列表               # 存储多个
> get key名                    # 获取key值	 
> mget key名列                 # 获取多个值
> select [0~15]                # 切换库。数据库编号0-15

> keys *                    # 查看所有变量
> keys a?                   # 显示指定key名
> exists key名              # 测试key名是否存在
> ttl key名                 # 查看key生存时间
> type key名                # 查看key类型

> move key名 库编号          # 移动key到指定的库
> expire key名 数字          # 设置key有效时间
> del key名                  # 删除指定的key
> flushall                   # 删除内存里所有key
> flushdb                    # 删除所在库的所有key
> save                       # 保存所有key到硬盘
> shutdown                   # 停止服务

5、配置文件


5.1、主配置文件分类

]$ vim /etc/redis/6379.conf

‘此配置文件中,配置项目是有分类的:‘
#################### NETWORK ###################

  • 分类:
名称 说明
NETWORK 网络
GENERAL 常规
SNAPSHOTTING 快照
REPLICATION 复制
SECURITY 安全
CLIENTS 客户端
MEMORY MANAGEMENT 内存管理

5.2、计量单位

  • 在此配置文件中,有专门标明对应的计量单位。
]$ vim /etc/redis/6379.conf 
... ...
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.


5.3、常用配置项

]# vim /etc/redis/6379.conf
70 		bind 127.0.0.1                          # 连接IP
93 		port 6379                               # 端口
137 	daemonize yes                           # 守护进程方式运行(即进程一直在运行在内存中)
172 	logfile /var/log/redis_6379.log
187 	databases 16                            # 数据库个数
264 	dir /var/lib/redis/6379                 # 数据库目录
533 	# maxclients 10000                      # 并发连接数量
501 	# requirepass foobared                  # 连接密码

5.4、内存管理

]# vim /etc/redis/6379.conf

################## MEMORY  MANAGEMENT #####################
‘清除策略‘
volatile-lru                    # 最近最少使用(针对设置了TTL的key)
allkeys-lru                     # 删除最少使用的key(针对所有key)
allkeys-lfu                     # 从所有key中清除使用频率最少的key
volatile-lfu                    # 从所有配置了过期时间的key中,清除使用频率最少的key
volatile-random                 # 在设置了TTL的key里随机移除
allkeys-random                  # 随机移除key
volatile-ttl(minor TTL)         # 移除最近过期的key
noeviction                      # 不删除

‘优化设置‘
maxmemory                       # 最大内存
maxmemory-policy                # 定义使用策略
maxmemory-samples               # 选取key模板的个数(针对 lru 和 ttl 策略)


6、设置密码

]# vim /etc/redis/6379.conf     # 可更改连接IP、端口。启用密码
70 		bind 192.168.4.50							
93 		port 6350											
501 	requirepass 123456
	
‘连接格式‘
]# redis-cli -h 主机地址 -p 端口 -a 密码
]# redis-cli -h 192.168.4.50  -p 6350  -a 123456				


‘注意:当端口改变后,就无法再使用脚本 停止服务。有2种方法‘
1.进入redis数据库后,使用shutdown命令。
]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 
192.168.4.50:6350> shutdown

2.修改脚本,在脚本中加入命令:
]# vim /etc/init.d/redis_6379
redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown


三、LNMP+Redis

1、部署基本LNMP

]# yum  -y  install  gcc    pcre-devel   zlib-devel  	# 安装依赖
]# tar  -zxvf  nginx-1.12.2.tar.gz  					# 解压
]# cd nginx-1.12.2                  # 进源码目录
]# ./configure                      # 配置
]# make && make install             # 编译安装


2、使php支持redis

]$ yum -y install  php-fpm  php  php-devel  automake  autoconf


]# tar -zxf php-redis-2.2.4.tar.gz      # 安装扩展包,使php支持redis
]# cd phpredis-2.2.4/
]# phpize                               # 生成配置文件php-config及 configure命令
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
]# ./configure  --with-php-config=/usr/bin/php-config       # 配置
]# make
]# make install

3、修改php.ini 文件

]#vim /etc/php.ini
728 extension_dir = "/usr/lib64/php/modules/"       # 模块文件目录
730 extension = "redis.so"                          # 模块文件名
:wq

]# systemctl  restart php-fpm                   # 重启php-fpm服务
]#  netstat  -utnlp  | grep  :9000              # 查看端口

4、测试


  • 创建网站脚本
]# vim  /usr/local/nginx/html/linkredis.php
<?php
$redis = new redis();
$redis->connect("192.168.4.50","6350");
$redis->auth("123456");
$redis->set("linux","redhat");
echo $redis->get("linux");
?>
  • 访问
]# curl  http://localhost/linkredis.php                 # 访问nginx服务
   redhat  


~]# redis-cli -h 192.168.4.50 -p 6350 -a 123456         # 连接redis服务
192.168.4.50:6350> keys *   //查看变量
1) "linux"
192.168.4.50:6350> 
192.168.4.50:6350> get linux //获取值
"redhat"
192.168.4.50:6350> 


四、Redis集群

1、工作原理


  • redis-trid.rb 是由redis开发者编写的一个脚本。可用于创建管理调度集群。
  • 集群管理器中,有slots(槽)0~16383。共16384个slots。
  • 工作时,将槽平均分配给集群中的主master服务器
  • 当客户端写入数据时,将客户端写入的key名称做hash计算,得出的值再对16384取余,得到的数再匹配对应的主机分配的槽,存入相应的主服务器。

技术分享图片


2、部署管理主机


  • 部署ruby 脚本运行环境
  • 创建管理集群脚本
  • 此部署可单独部署,也可部署在任意一台 Redis 服务器上。

管理主机,要从redis源码包中获取一个管理集群的ruby脚本。这是由redis开发者写好的。

]$ yum -y install ruby rubygems
ruby:用于解释ruby语言编写的脚本的解释器。
rubygems:提供命令gem。(相当于rpm,是用于安装gem文件的)

]$ gem install redis-3.2.1.gem              # 此软件是用来给master提供连接redis服务的程序

]$ ls  redis-4.0.8/src/					
redis-trib.rb                               # 这就是管理集群的ruby脚本。

]$ echo $PATH
]$ mkdir /root/bin/
]$ cp redis-trib.rb  /root/bin/             # 将脚本拷贝到PATH目录下,方便运行。
]# chmod  +x /root/bin/redis-trib.rb	

  • redis-trib 脚本用法
‘格式‘
]# redis-trib.rb  命令 选项 参数
命令 用法
create 创建集群
check 检查集群
info 查看集群
reshard 重新分片
del-node 删除主机
add-node 添加 master 主机
add-node --slave 添加 slave 主机
rebalance 平均分配 hash slots

3、创建集群


3.1、配置

  • 集群配置:至少需要6台 Redis 服务器。
> cluster info              # 查看是否启用集群配置
cluster_state:fail          # 集群状态
... ...
cluster_known_nodes:1       # 集群节点
cluster_size:0              # 集群主服务器

-------------------------------------------------------------------

‘修改配置启用集群功能‘
]# vim /etc/redis/6379.conf
815 	cluster-enabled yes                     # 启用集群功能
823 	cluster-config-file nodes-6379.conf     # 存储集群信息文件
829 	cluster-node-timeout 5000               # 连接超时

‘集群的端口=服务端口+10000‘
]# ss -atunp | grep redis
tcp 0 0 192.168.4.51:6351
tcp 0 0 192.168.4.51:16351

3.2、创建

  • 正式创建,在管理机上操作
  • 注意:--replicas 1 这是指定每台主服务器带几台从服务器。
    • 默认是3台主。如果指定从为2,则共需要3+2+2+2=9台。
]$ redis-trib.rb create --replicas 1 > 192.168.4.51:6351  192.168.4.52:6352  192.168.4.53:6353 > 192.168.4.54:6354  192.168.4.55:6355  192.168.4.56:6356

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:                                    # 定义主服务器
192.168.4.51:6351
192.168.4.52:6352
192.168.4.53:6353
Adding replica 192.168.4.55:6355 to 192.168.4.51:6351
Adding replica 192.168.4.56:6356 to 192.168.4.52:6352
Adding replica 192.168.4.54:6354 to 192.168.4.53:6353
... ....
[OK] All 16384 slots covered.

3.3、查看集群

‘在管理主机上查看‘
]$ redis-trib.rb  info  IP:端口               # 查看集群信息
]$ redis-trib.rb  check IP:端口               # 检查集群主机角色


‘在各个redis服务器上查看‘
> cluster info                              # 查看集群信息
> cluster nodes                             # 查看集群节点信息

~]$ ls /var/lib/redis/6379/                 # 查看集群的文件
dump.rdb  nodes-6379.conf

3.4、连接集群

  • 客户端可以连接集群中任意一台 redis 服务器
]$ redis-cli -c -h IP地址 -p 端口           # 必须要加选项-c。才能进入集群模式。
]$ redis-cli -c -h 192.168.4.51 -p 6351

4、集群管理


  • 高可用特性:
    • 当 master 宕机后对应的 slave 自动被选举为 mater
    • 原 master 启动后,会自动配置为当前 master 的 slave

4.1、添加

  • 添加 master 服务器
    • 添加时不指定主机角色,默认新主机被选为 master
    • 添加的 master 主机,需要手机分配 hash 槽
‘格式‘
]$ redis-trib.rb add-node 添加的主机IP:端口  集群中任一主机IP:端口

‘重新分片‘
]$ redis-trib.rb reshard  集群中任一主机IP:端口

操作此分片命令后,会有3个步骤
1.确定透出的hash槽个数(需要手动计算出平均的值)
2.确定接收hash槽的主机ID(通过check命令查看)
3.移出hash槽的主机ID(一般选择all)

  • 添加 slave 服务器
‘格式‘
]$ redis-trib.rb  add-node --slave  [--master-id ID值]  >  添加的主机IP:端口  集群中任一主机IP:端口

‘[--master-id  ID值]  这是用于指定master主机的。可不写。默认会把新节点添加到slave最少的主服务器上,或随机添加。‘

4.2、移除

  • 移除 slave
    • slae 没有 hash 槽,直接移除即可。
    • 移除时成功,会停止被移除的服务器的 redis
]$ redis-trib.rb  del-node  移除主机IP:端口  移除主机的ID值


]$ redis-trib.rb del-node 192.168.4.59:6359 > 955fb03ceedbb5d82b1256536107140809eeb92d
  • 移除 master
    • 将 master 移除后,slave 会自动升级为 master。
    • 需要先释放占用的 hash 槽
‘格式‘
]$ redis-trib.rb  reshard  移除主机IP:端口
]$ redis-trib.rb  del-node  移除主机IP:端口  移除主机ID值


‘释放时的步骤‘
1.指定移出slots  个数
2.指定接收slots  主机ID
3.指定移出slots  主机ID


]$ redis-trib.rb  rebalance  IP:端口          # 将slots较多的主机的slots平均分配。

4.3、将移除的再添加

  • 启动redis
  • 在将要添加的主机上进入redis。先还原:cluster reset
  • 在管理主机上使用添加命令。
‘将被添加的主机‘
]$ /etc/init.d/redis_6379 start 
]$ redis-cli -h 192.168.4.58 -p 6358 
> cluster reset

‘管理主机‘
]$ redis-trib.rb add-node  192.168.4.58:6358  192.168.4.51:6351

4.4、还原成独立的服务器

  • 停止服务
  • 删除集群文件:/var/lib/redis/6379/*
  • 修改配置文件,关闭集群状态
  • 重新启动
]$ redis-cli -h IP -p 端口 shutdown
]$ rm -rf /var/lib/redis/6379/*
]$ vim /etc/redis/6379.conf         # 注释掉集群开启
815 	#cluster-enabled yes										
823 	#cluster-config-file nodes-6379.conf		
829 	#cluster-node-timeout 5000	

]$ /etc/init.d/redis_6379  start


五、主从

1、主从复制原理

  • slave 向 master 发送 sync 命令
  • master 启动后台存盘进程,并收集所有修改数据命令
  • master 完成后台存盘后,传送整个数据文件到 slave
  • slave 接收数据文件,加载到内存中完成首次完全同步
  • 后续有新数据产生时,master 继续收集数据修改命令依次传给 slave ,完成同步。

2、配置主从


  • Redis 服务运行后,默认都是 master 服务器
  • 所以 master 无需要配置,只配置 slave 即可。
  • 可配置模式:一主一从,一主多从,主从从。
> info replcation               # 查看复制信息
role:master                     # 角色
connected_slaves:1              # 连接的从服务器个数
slave0:ip=192.168.4.52,port=6352,state=online,offset=42,lag=1
‘基本格式‘
> slaveof 主IP 主端口               # 配置从,声明主。
> slaveof 192.168.4.51  6351
> slaveof no one                    # 反客为主。即取消slave。

‘以上命令行都为临时配置,永久配置应写入配置文件:‘
]# vim /etc/redis/6379.conf							
282 	slaveof 192.168.4.51 6351

3、带密码的主从

‘配置master‘
]$ vim /etc/redis/6379.conf
501		requirepass 123456              # 设置连接密码

‘配置slave‘
]$ vim /etc/redis/6379.conf
282 	slaveof 192.168.4.51 6351
289		masterauth 123456               # 主库密码

‘通过命令行也可设置永久配置‘
> config get masterauth                 # 查看配置变量
> config set masterauth 123456
> confgi rewrite                        # 将配置保存到配置文件中。

4、哨兵服务

  • 用于监视 master 服务器
  • 发现 master 宕机后,将 slave 服务器升级为 master 服务器
  • 将原master修复后,再启动服务,将会变成 现有master 的 slave
  • 主配置文件:sentinel.conf
  • 模板文件:redis-4.0.8/sentinel.conf
‘先安装Redis,但不用启用Redis,通过配置文件设置哨兵服务‘
]$ vim /etc/sentinel.conf           # 手动创建写入。
bind 0.0.0.0
prot 26379
sentinel monitor server51 192.168.4.51 6351 1
sentinel auth-pass server51 123456
:wq

--------------------------------------
# sentinel monitor 主机名 IP  端口  票数
主机名:自定义
IP地址:master主机的IP
端 口:master主机redis服务的端口
票 数:发现主master宕机的哨兵服务器个数。
--------------------------------------

]$ redis-sentinel /etc/sentinel.conf        # 启服务。


六、持久化

1、RDB


1.1、概念、优缺点

Redis数据库文件(Redis DataBase)

  • 数据持久化方式之一
  • 数据持久化的默认方式
  • 按照指定时间间隔,将内存中的数据集快照写入硬盘
  • 快照:Snapshot
  • 恢复时,将快照文件直接导入内存

当没有做主从、也没有集群时。可将RDB文件进行备份后进行恢复数据。


RDB优点

  • 高性能的持久化实现

    • 主进程不做持久化,仍然接受客户端的读写操作

    • 另外创建一个子进程来执行持久化,先将数据写入临时文件

    • 持久化过程结束后,再用这个临时文件替换上次持久化好的文件

    • 过程中主进程不做任何 IO 操作。

  • 比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合。

RDB缺点:

  • 意外宕机时,丢失最后一次持久化的所有数据。
  • 因是多进程操作,当硬件资源不足时,性能受到影响。

1.2、RDB文件

‘RDB文件名‘
> config get dbfilename
1) "dbfilename"
2) "dump.rdb"

]# vim /etc/redis/6379.conf
254		dbfilename dump.rdb


]# ls /var/lib/redis/6379/
dump.rdb

‘当服务停止时,就会将内存中的数据写入硬盘,即生成的文件dump.rdb(已有此文件,则将数据存入)。‘
  • 优化设置
‘数据从内存保存到硬盘的频率‘
]# vim /etc/redis/6379.conf	
219		save 900 1                  # 15分钟用有1个key改变
220		save 300 10                 # 5分钟且有10个key改变
221		save 60 10000               # 1分钟且有10000个key改变

‘手动存盘‘
> save                      # 阻塞写存盘。(在存盘期间,无法访问内存,即无法读写)
> bgsave                    # 不阻塞写存盘。会单独生成一个进程,在后台进行存盘。

2、AOF


2.1、概念、优缺点

AOF:Append Only File

  • AOF是一个追加方式记录写操作的文件
  • 记录 Redis 服务所有写操作
  • 不断的将新的写操作,追加到文件的末尾
  • 默认没有启用
  • 可使用 cat 命令可以查看文件内容

可以有效弥补RDB的不足,实际工作中,一般是两种同时使用。


优点:

  • 可以灵活设置持久化方式
  • 出现意外宕机时,仅可能丢失1秒的数据

缺点:

  • 持久化文件的体积通常会大于 RDB 方式
  • 执行 Fsync 策略时的速度可能会比 RDB 方式慢

2.2、启用AOF

> config set appendonly yes                 # 启用AOF
> config rewrite                            # 写入配置文件

]# vim /etc/redis/6379.conf
673		appendonly yes
677		appendfilename "appendonly.aof"     # 默认文件名

  • 优化配置
]$ vim /etc/redis/6379.conf
702		appendfsync  always         # 时时记录,并完成磁盘同步
703		appendfsync  everysec       # 每秒记录一次,并完成磁盘同步
704		appendfsync  no             # 写入AOF,不执行磁盘同步

appendonly.aof:记录的是操作命令
dump.rdb:存储实际的数据

‘日志重写:重写不是重新生成日志,而是将一些相同的命令合并,对日志进行瘦身‘
745		auto-aof-rewrite-min-size 64mb					# 首次重写触发值
744		auto-aof-rewrite-percentage 100					# 当增长多少百分比时,再次重写。

`举例说明:当日志文件达到64mb时,进行瘦身,假设瘦身后大小为30mb,此后日志再次增长,增长数为原基础的100%时,即大小为60mb时,再次瘦身。`


‘修复AOF文件:把文件恢复到最后一次的正确操作(此功能不是任何时候都有效)‘
]$ redis-check-aof  --fix  /var/lib/redis/6379/appendonly.aof



七、数据类型

1、字符string


  • 设置key 及其值,并定义过期时间,是否赋值。
> set key value [EX seconds] [PX milliseconds] [NX|XX]
EX:定义值的存储时间,秒
PX:定义值的存储时间,毫秒
NX:变量不存在则赋值
XX:变量存在才赋值(默认是这种)

# 例:
> set key value EX 15           # 存储时间15秒
> ttl key                       # 查看值生存时间
(integer) -2                    # -2表示过期,-1表示永久存在。
  • 替换
> setrange key offset value     # 从偏移量开始复写key的特定位的值(相当于替换)

# 例:
> set x ABCDEFG
> setrange x 3 ppp
(integer) 7
> get x
"ABCpppG"
  • 追加、统计字串长度
> append key value              # 追加,并显示长度。存在则追加,不存在则创建。
> strllen key                   # 只统计字串长度
  • 位存储(二进制存储)
> setbit  key  offset value         # 对key所存储的字串,设置或清除特定偏移量上的位(bit)
> setbit  key  offset(位)  [0|1]    # value的值只能是1或0,offset在0~2^32 之间
> getbit  key  offset               # 查看key中第几位的量
> bitcount key                      # 统计字串中被设置为1的比特位数量

> setbit  x 0 1                     # 0001
> setbit  x 3 1                     # 1001
> bitcount x                        # 结果为2
  • 自减、自增
> decr key                          # 将key值减1,key不存在则初始化为0,再减1
> decrby key decrement              # 将key值,减去decrement

> incr key                          # 将key值加1,key不存在则初始化为0,再加1
> incr key decrement                # 将key值,增加decrement

> incrbyfloat key increment         # 将key值加上浮点数增量increment。(加小数)
  • 查看字符串特定偏移量的值
> getrange  key  start  end         # 截取key中的值,范围为start到end。

偏移量:从头数,以0开始计数;从末尾,以-1开始计数,-2表示倒数第二。

# 例:
> set x 0123456789
> getrange  x  0  -1                # 显示全部(在未知有多少位时可使用)
"0123456789"

> getrange  x  0  3
"0123"

> getrange  x  -3  -1
"789"

2、列表List


  • Redis 的列表List 是一个字符队列。即一个key 可以有多个值。
  • 存储方式:先进后出
> lpush key value [...]             # 将一个或多个值,插入到列表key 的表头。不存在则创建。
> lrange key start stop             # 从开始start位置读取 key 的值到stop结束


> lpush list a b c d
> lrange list 0 -1                  # 从0位开始,-1为末尾结束。先进后出
1) "d"
2) "c"
3) "b"
4) "a"

  • 删除表头值,并显示删除的表头值
> lpop key                          # 可多次执行

> lpop list
"d"
> lrange list 0 -1
1) "c"
2) "b"
3) "a"

  • 显示、替换、插入
> llen key                      # 显示列表长度
> lindex key index              # 显示列表中第index个的值
> lset key index value          # 将key中第 index 个的值修改为 value
> rpush key value [...]         # 将value插入到key列表的末尾。(可插入多个值)


# 例:
> lpush list a b c d

> llen list                     # 显示列表list长度
(integer) 4
> lindex list 3                 # 显示列表中第3个的值
"a"
> lset list 0 test              # 将第0个的值替换为test
OK
> lrange list 0 -1
1) "test"
2) "c"
3) "b"
4) "a"

> rpush list 1 2 3              # 在末尾插入值1 2 3 (先进后出)
(integer) 7
> lrange list 0 -1
1) "test"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"

  • 删除末尾值,并显示删除的末尾值
> rpop  key 

> rpop list                 # 删除列表list的末尾值
"3"

3、Hash表


Redis hash

  • 这是一个 string 类型的 field 和 value 的映射表
  • 一个 key 可对应多个 field ,一个 field 对应一个 value
  • 将一个对象存储为 hash 类型,较于每个字段存储成 string 类型更能节省内存。

可理解为:就是一张表,key是表名,field是表字段,value是表内容。

> hset key field value      # 设置
> hget key field            # 获取

# 例:
> hset site bd baidu        # 创建hash表,表名site,其中一个字段bd,存储值为baidu
> hget site bd              # 获取site表中的bd值
"baidu"



> hmset key field value [field value...]    # 同时给多个field赋值
> hmget key field [field...]                # 同时获取多个field的值
> hdel key field [field...]                 # 删除表中多个field值,不存在则忽略。

> hmset site bd baidu gog google sl sina
  • 查看
> hkeys key         # 显示表中所有的field名称
> hvals key         # 显示表中所有的field的值
> hgetall key       # 显示表中所有的field及值

192.168.4.50:6350> hkeys site
1) "bd"
2) "gog"
3) "sl"

192.168.4.50:6350> hvals site
1) "baidu"
2) "google"
3) "sina"

192.168.4.50:6350> hgetall site
1) "bd"
2) "baidu"
3) "gog"
4) "google"
5) "sl"
6) "sina"

Redis-基础

原文:https://www.cnblogs.com/SHUN-The-Unique-Soul/p/14287287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!