Redis基础认识及常用命令使用
Redis简介
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。 –摘自360百科
简而言之redis是属于非关系型数据库,存储结构是:key-value,内存-磁盘的存储方式。
Redis的应用场景
1.数据缓存
2.session共享(会话保持)
3.作为计数器
4.消息队列
5.最新列表
Redis的持久化
redis持久化会在磁盘上依赖两个文件
数据文件:rdb
日志文件:aof
redis实现持久化两种机制
RDB:周期的将内存中的数据备份到磁盘
AOF:借助于一个日志文件,这个文件会记录每次操作
Redis中的数据类型
字符类型
列表类型
有序集合类型
无序集合类型
哈希表类型
这部分内容大家也可以参考网站 http://redisdoc.com/
Redis的安装
直接使用yum即可进行安装
[root@ken ~]# yum install redis -y
使用yum安装的redis版本是3.2的
[root@ken ~]# rpm -q redis
redis-3.2.12-1.el7.x86_64
如果你想下载安装最新版本或者更高的版本可以在redis官网站https://redis.io进行下载
Redis命令使用
首先启动redis。redis监听的是本机的6379端口,可以在配置文件中进行修改
[root@ken ~]# systemctl restart redis
[root@ken ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 127.0.0.1:6379 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 :::10050 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
登录redis使用命令redis-cli
[root@ken ~]# redis-cli
127.0.0.1:6379>
在上面已经介绍了几种redis的数据类型,下面一一进行示范演示
字符类型
常用操作
1. set key value #将字符串值 value
关联到 key
127.0.0.1:6379> set age 10
OK
2. get key #返回 key
所关联的字符串值。
127.0.0.1:6379> get age
"10"
3. APPEND key value #将 value
追加到 key
原来的值的末尾
127.0.0.1:6379> append age ken
(integer) 5
127.0.0.1:6379> get age
"10ken"
4. MSET key value [key value …] #同时设置一个或多个 key-value
对
127.0.0.1:6379> mset addr jiangsu tel 123 gender male
OK
5. MGET key [key …] #返回所有(一个或多个)给定 key
的值
127.0.0.1:6379> mset addr jiangsu tel 123 gender male
OK
127.0.0.1:6379> MGET addr tel gender
1) "jiangsu"
2) "123"
3) "male"
6. INCR key #将 key
中储存的数字值增一
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> INCR num
(integer) 2
127.0.0.1:6379> INCR num
(integer) 3
127.0.0.1:6379> INCR num
(integer) 4
127.0.0.1:6379> INCR num
(integer) 5
127.0.0.1:6379> get num
"5"
7. DECR key #将 key
中储存的数字值减一
127.0.0.1:6379> DECR num
(integer) 4
127.0.0.1:6379> DECR num
(integer) 3
127.0.0.1:6379> DECR num
(integer) 2
127.0.0.1:6379> get num
"2"
8. STRLEN key #返回 key
所储存的字符串值的长度
127.0.0.1:6379> STRLEN tel
(integer) 3
127.0.0.1:6379> get tel
"123"
127.0.0.1:6379> STRLEN num
(integer) 1
127.0.0.1:6379> get num
"2"
9. DEL key [key …] #删除给定的一个或多个 key
127.0.0.1:6379> DEL age num
(integer) 2
127.0.0.1:6379> keys *
1) "gender"
2) "addr"
3) "name"
4) "tel"
哈希表类型
常用操作
1.HSET key field value #将哈希表 key
中的域 field
的值设为 value
127.0.0.1:6379> hset myha ken 123
(integer) 1
2.HGET key field返回哈希表 key
中给定域 field
的值
127.0.0.1:6379> hset myha ken 123
(integer) 1
127.0.0.1:6379> HGET myha ken
"123"
3. HGETALL key #返回哈希表 key
中,所有的域和值
127.0.0.1:6379> HGETALL myha
1) "ken"
2) "123"
列表类型
常用操作
1.LPUSH key value [value …] #将一个或多个值 value
插入到列表 key
的表头
127.0.0.1:6379> lpush ken 1 2 3 4
(integer) 4
2.RPUSH key value [value …] #将一个或多个值 value
插入到列表 key
的表尾(最右边)
127.0.0.1:6379> RPUSH ken 7 8 9
(integer) 7
3.LRANGE key start stop #返回列表 key
中指定区间内的元素,区间以偏移量 start
和 stop
指定
127.0.0.1:6379> LRANGE ken 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "7"
6) "8"
7) "9"
4. RPOP key #移除并返回列表 key
的尾元素
127.0.0.1:6379> RPOP ken
"9"
127.0.0.1:6379> LRANGE ken 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "7"
6) "8"
127.0.0.1:6379> RPOP ken
"8"
127.0.0.1:6379> LRANGE ken 0 10
1) "4"
2) "3"
3) "2"
4) "1"
5) "7"
5. LLEN key #返回列表 key
的长度
127.0.0.1:6379> LLEN ken
(integer) 5
6. LREM key count value #根据参数 count
的值,移除列表中与参数 value
相等的元素
127.0.0.1:6379> LREM ken 2 3
(integer) 1
127.0.0.1:6379> LRANGE ken 0 10
1) "4"
2) "2"
3) "1"
4) "7"
127.0.0.1:6379> LREM ken 2 2
(integer) 1
127.0.0.1:6379> LRANGE ken 0 10
1) "4"
2) "1"
3) "7"
无序集合
常用操作
1.SADD key member [member …] #将一个或多个 member
元素加入到集合 key
当中
127.0.0.1:6379> SADD kenken 1 2 3
(integer) 3
2.SMEMBERS key #返回集合 key
中的所有成员
127.0.0.1:6379> SMEMBERS kenken
1) "1"
2) "2"
3) "3"
3.SCARD key #返回集合 key
的基数(集合中元素的数量)
127.0.0.1:6379> SCARD kenken
(integer) 3
4.SREM key member [member …] #移除集合 key
中的一个或多个 member
元素
127.0.0.1:6379> SREM kenken 3
(integer) 1
127.0.0.1:6379> SMEMBERS kenken
1) "1"
2) "2"
有序集合
常用操作
1. ZADD key score member [[score member] [score member] …] #将一个或多个 member
元素及其 score
值加入到有序集 key
当中
127.0.0.1:6379> ZADD ke 9 baidu
(integer) 1
2.ZRANGE key start stop [WITHSCORES] #返回有序集 key
中,指定区间内的成员
127.0.0.1:6379> ZRANGE ke 0 9
1) "baidu"
3.ZREM key member [member …] #移除有序集 key
中的一个或多个成员
127.0.0.1:6379> ZREM ke baidu
(integer) 1
127.0.0.1:6379> ZRANGE ke 0 -9
(empty list or set)
Redis基础认识及常用命令使用的更多相关文章
- Redis基础认识及常用命令使用(一)--技术流ken
Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...
- Redis基础认识及常用命令使用(一)--转载
Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...
- 解析Redis操作五大数据类型常用命令
摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...
- Linux基础 - 系统优化及常用命令
目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...
- Linux基础系统优化及常用命令
# Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...
- redis学习-集合set常用命令
redis学习-集合set常用命令 1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一) 2.smembers:查看集合中所有的元素(上图事例) 3.srem:删除结合中指定的元素 4 ...
- redis学习-散列表常用命令(hash)
redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...
- Linux 系统基础优化和常用命令
目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...
- 运维 07 Linux系统基础优化及常用命令
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...
随机推荐
- 基于 abp vNext 微服务开发的敏捷应用构建平台 - 设计构想
许多中小企业的管理模式都是在自身的发展过程中不断摸索,逐步建立起来的,每一家都有其独有的管理模式,而且随着企业的不断发展,管理模式也在不断变化中.企业在发展壮大的过程中离不开信息化系统的支撑,企业在构 ...
- Java 8新特性(四):新的时间和日期API
Java 8另一个新增的重要特性就是引入了新的时间和日期API,它们被包含在java.time包中.借助新的时间和日期API可以以更简洁的方法处理时间和日期. 在介绍本篇文章内容之前,我们先来讨论Ja ...
- 手写一个简单版的SpringMVC
一 写在前面 这是自己实现一个简单的具有SpringMVC功能的小Demo,主要实现效果是; 自己定义的实现效果是通过浏览器地址传一个name参数,打印“my name is”+name参数.不使用S ...
- SpringBoot(19)---SpringBoot整合Apollo
SpringBoot(19)---SpringBoot整合Apollo 有关Apollo之前已经写了两篇文章: 1.[Apollo](1)--- Apollo入门介绍篇 2.[Apollo](2)-- ...
- [CSP-S2019]划分 题解
CSP-S2 2019 D2T2 考场上读完题感觉是DP就直接扔了开T3了,考完才发现部分分好像不难拿,枯了 题意分析 给出一个数列,要求将其分成几段,使每段的和非严格递增,求最小的每段的和的平方和. ...
- SEO大神都是些什么人
http://www.wocaoseo.com/thread-97-1-1.html 貌似好久没有更新seo培训联盟的文章了,最近一直在专心学习其他的东西,前一段写了几篇关于用户需求和体验的文章,但是 ...
- Qt QString字符串分割、截取
在做项目中不可避免的会使用到一串字符串中的一段字符,因此常常需要截取字符串. 有两种方式可以解决这个问题: 方法一:QString分割字符串: QString date=dateEdit.toStri ...
- e3mall商城总结11之sso系统的分析、应用以及解决ajax跨域问题
说在前面的话 一.sso系统分析 什么是sso系统 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次 ...
- Vue开源项目使用探索
前言 本文记录一次使用Vue开源项目的过程. 寻找Vue开源项目 要使用Vue开源项目就必须先找到一个,我们去Github上搜索[后台],然后使用Vue分类进行检索,找到排名第一的开源框架进行下载—v ...
- Tornado + vue.js 前后端分离运行脚本
shell脚本部分: #!/bin/bash 主脚本 (./cem-demo_publish_front) (./cem-demo_publish_backend) #!/bin/bash 后端脚本 ...