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基础认识及常用命令使用的更多相关文章

  1. Redis基础认识及常用命令使用(一)--技术流ken

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...

  2. Redis基础认识及常用命令使用(一)--转载

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...

  3. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  4. Linux基础 - 系统优化及常用命令

    目录 Linux基础系统优化及常用命令 Linux基础系统优化 网卡配置文件详解 ifup,ifdown命令 ifconfig命令 ifup,ifdown命令 ip命令 用户管理与文件权限篇 创建普通 ...

  5. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

  6. redis学习-集合set常用命令

    redis学习-集合set常用命令   1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一) 2.smembers:查看集合中所有的元素(上图事例) 3.srem:删除结合中指定的元素 4 ...

  7. redis学习-散列表常用命令(hash)

    redis学习-散列表常用命令(hash)   hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...

  8. Linux 系统基础优化和常用命令

    目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...

  9. 运维 07 Linux系统基础优化及常用命令

    Linux系统基础优化及常用命令   Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...

随机推荐

  1. C++ U型数

    U型数字 最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 3131 ...

  2. springMVC入门(四)------参数绑定与返回值类型

    简介 从之前的介绍,已经可以使用springMVC完成完整的请求.返回数据的功能. 待解决的问题:如何将数据传入springMVC的控制器进行后续的处理,完成在原生servlet/jsp开发中Http ...

  3. 使用disk-image-builder(DIB)制作Ironic 裸金属镜像

    export DIB_DEV_USER_USERNAME=centos export DIB_DEV_USER_PASSWORD= export DIB_DEV_USER_PWDLESS_SUDO=Y ...

  4. 使用client-go自定义开发Kubernetes

    参考链接:使用client-go自定义开发Kubernetes 1.本地运行 apiserver demo [root@wangjq demo]# apiserver-boot run local / ...

  5. 操作系统-I/O(6)I/O与系统调用

    所有高级语言的运行时(runtime)都提供了执行I/O功能的机制. 例如,C语言中提供了包含像printf()和scanf()等这样的标准I/O库函数, C++语言中提供了如 <<和&g ...

  6. 算法-搜索(3)AVL树

    AVL树高度平衡的二叉搜索树,任一点的平衡印章只能是+1.-1.0,从而尽量降低树的高度. 如果它有n个结点,高度可保持在O(log2n),平均搜索长度也可保持在O(log2n). (1)AVL树的插 ...

  7. Logistic回归分析之多分类Logistic回归

    Logistic回归分析(logit回归)一般可分为3类,分别是二元Logistic回归分析.多分类Logistic回归分析和有序Logistic回归分析.logistic回归分析类型如下所示. Lo ...

  8. Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法

    笔者个人笔记本电脑,用的是华硕的飞行堡垒FZ系列,上个月装了个Ubuntu的系统,之后换回Windows后,电脑疯狂蓝屏,错误代码只有这个DRIVER_POWER_STATE_FAILURE.一开始我 ...

  9. jQuery源码分析系列(三)Sizzle选择器引擎-下

    选择函数:select() 看到select()函数,if(match.length === 1){}存在的意义是尽量简化执行步骤,避免compile()函数的调用. 简化操作同样根据tokenize ...

  10. JVM大作业5——指令集

    JVM的每一个线程都有一个虚拟机栈,方法调用时,JVM会在虚拟机栈内为该方法创建一个栈帧. 一条线程,只有正在执行的方法对应的栈帧时可活动的,这个栈帧被称为当前栈帧,当前栈帧对应的方法被称为当前方法, ...