redis简介
redis是一个开源(BSD许可)的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,它可以用作数据库、缓存和消息中间件,并提供多种语言的API。从2010年3月15日起,redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

redis是一个key-value存储系统。它支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

1、安装redis

1.1使用yum进行安装,这里使用的是yum源,关于如何安装yum仓库请参考我的https://www.cnblogs.com/caesar-id/p/10821105.html

查看阿里源的redis版本

[root@localhost ~]# yum list redis

使用yum安装redis,安装过程非常简单

[root@localhost ~]# yum install redis -y

1.2使用源码安装redis

我们使用yum安装的redis版本是3.2.12,但是截至当前redis版本已经是redis-5.0.4。这里我们就使用最新的版本进行源码安装。

如果你已经使用yum进行了安装,现在想使用最新版本的redis,你最好卸载当前的redis。以免造成不必要的麻烦。

[root@localhost ~]# yum remove redis -y  // 卸载yum安装的redis

1.2.1下载redis源码包

[root@localhost ~]# wget -P /opt/source/ http://download.redis.io/releases/redis-5.0.4.tar.gz

1.2.2解包

[root@localhost ~]# tar -zxvf /opt/source/redis-5.0.4.tar.gz -C /opt/

1.2.3安装

[root@localhost ~]# cd /opt/redis-5.0.4/
[root@localhost redis-5.0.4]# make && make install  //默认在/usr/local/bin所以就不用我们设置环境变量了

安装后查看redis都有哪些可执行文件

[root@localhost ~]# ls /usr/local/bin/redis-*
/usr/local/bin/redis-benchmark    // 用于进行redis性能测试的工具
/usr/local/bin/redis-cli          // redis的客户端
/usr/local/bin/redis-check-aof    // 用于修复出问题的AOF文件
/usr/local/bin/redis-sentinel     // 用于集群管理
/usr/local/bin/redis-check-rdb    // 用于修复出问题的dump.rdb文件
/usr/local/bin/redis-server       // redis的服务端

1.3了解redis服务的配置文件

redis-server 可以指定配置文件来启动服务,这里在redis的安装目录下有个redis.conf模板,我们查看下模板中都有哪些配置

[root@localhost ~]# cat /opt/redis-5.0.4/redis.conf | grep -v "^#" | grep -v "^$   // 过滤掉注释和空行
bind 127.0.0.1   // 绑定服务器IP地址,多个使用空格进行分隔,如果不指定bind默认监听本机所有可用的网络接口
protected-mode yes  // 服务器的安全模式
port 6379    // 服务器的端口号
tcp-backlog 511   // TCP连接中已完成队列(完成三次握手之后)的长度
timeout 0  // 客户端空闲n秒后关闭连接(0表示不主动关闭连接)
tcp-keepalive 300   // TCP长连接单位秒(300秒没有活动关闭连接)
daemonize no  // 守护进程建议使用yes启用守护进程,如果是no会阻塞shell窗口
supervised no   // 可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的
pidfile /var/run/redis_6379.pid
loglevel notice    // 日志级别。可选项有:debug(记录大量日志信息,适用于开发、测试阶段);  verbose(较多日志信息);  notice(适量日志信息,使用于生产环境);warning(仅有部分重要、关键信息才会被记录)。
logfile ""  // 日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到  /dev/null 。
databases 16   // 设置数据库的数目
always-show-logo yes
save 900 1    // 保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes  // 默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。

rdbcompression yes  // 是否在dump  .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大
rdbchecksum yes  // 是否CRC64校验rdb文件,会有一定的性能损失(大概10%)。
dbfilename dump.rdb   // dump 的reb文件名字
dir ./  // 数据库的工作目录
replica-serve-stale-data yes  //#当副本失去与主服务器的连接时,或当复制仍在进行中,副本可以以两种不同的方式进行操作:1)如果副本服务过时数据设置为“是”(默认值),则副本将仍然答复客户端请求,可能包含过期数据,或者如果这是第一次同步,则数据集可能为空。// 2)如果副本服务过时数据设置为“否”,则副本将使用对所有类型的命令执行“与正在进行的主控形状同步”错误。但是,对于信息、复制、AUTH、ping、关机、复制、角色、配置,订阅,取消订阅,psubscribe,punsubscribe,publish,pubsub,命令、发布、主机:和延迟。
replica-read-only yes   // 设置slave是否是只读的。从2.6版起,slave默认是只读的
repl-diskless-sync no   // 主从数据复制是否使用无硬盘复制功能。
repl-diskless-sync-delay 5  // 当启用无盘复制时,可以配置延迟。服务器等待,以便生成通过套接字传输RDB的子节点。复制品。这一点很重要,因为一旦转移开始,就不可能服务新的副本到达,将排队等待下一次RDB传输,因此服务器等待一段时间,以便让更多的副本到达。延迟以秒为单位指定,默认为5秒。禁用它完全设置为0秒,传输将尽快开始。
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

关于redis的优化,不在本文讨论范围内,下面我们手动创建一个配置文件来运行redis服务

1.4使用系统默认的配置文件登陆redis

[root@localhost ~]# redis-server 

开启后你会看到如下界面,shell被redis给阻塞住了。

新开一个shell,登陆redis

1.5创建自定义的redis配置文件

[root@localhost ~]# vim /opt/redis-5.0.4/myself.conf
bind 192.168.10.10    // 绑定IP地址
protected-mode yes    // 开启安全模式
port 9000             // 指定服务器端口
daemonize yes         // 开启守护进程
requirepass 123.com   // 登陆密码

1.5.1使用我们自定义的redis配置文件登陆redis服务器

[root@localhost ~]# vim /opt/redis-5.0.4/myself.conf   // 指定配置文件开启服务

使用客户端登陆(这里需要注意,如果是在当前shell开启的redis服务,这里就必须使用绝对路径来使用客户端。如果是新开一个shell就不会有这样的问题)

[root@localhost ~]# /usr/local/bin/redis-cli -p 9000 -h 192.168.10.10  

至此redis服务的启动,和登陆就到这里吧,下面我们来看一下redis的数据结构。


2.redis的数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型
字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)

如果对Python有所了解相信对上面的数据类型并不会陌生。

2.1字符串string的常用命令

set    // 设置key
get     // 获取key
append  // 追加string
mset    // 设置多个键值对
mget    // 获取多个键值对
del     // 删除key
incr    // 递增+1
decr    // 递减-1

2.2list类型的常用命令

lpush           // 从列表左边插
rpush           // 从列表右边插
lrange          // 获取一定长度的元素  lrange key  start stop
ltrim           // 截取一定长度列表
lpop            // 删除最左边一个元素
rpop            // 删除最右边一个元素
lpushx/rpushx   // key存在则添加值,不存在不处理

2.3set类型的常用命令

sadd        // 添加元素
srem        // 删除元素
sismember   // 判断是否为set的一个元素
smembers    // 返回集合所有的成员
sdiff       // 返回一个集合和其他集合的差异
sinter      // 返回几个集合的交集
sunion      // 返回几个集合的并集

2.4有序集合常用命令

ZADD         // 添加有序集合
ZREM         // 删除有序集合中的元素
ZREVRANGE    // 倒叙
ZRANGE       // 正序
ZCARD        // 有序集合的基数
ZSCORE       // 返回成员的值
ZRANK        // 返回有序集合中成员的排名

2.5哈希数据结构

hset       // 设置散列值
hget       // 获取散列值
hmset      // 设置多对散列值
hmget      // 获取多对散列值
hsetnx     // 如果散列已经存在,则不设置(防止覆盖key)
hkeys      // 返回所有keys
hvals      // 返回所有values
hlen       // 返回散列包含域(field)的数量
hdel       // 删除散列指定的域(field)
hexists    // 判断是否存在

2.6redis的基础命令

keys *        // 查看所有key
type key      // 查看key类型
ttl key       // 查看key过期剩余时间-1表示存在,-2表示key已经不存在了
persist       // 取消key的过期时间-1表示key存在,没有过期时间
exists key    // 判断key存在存在返回1否则0
del keys      // 删除key可以删除多个
dbsize        // 计算key的数量
expire key seconds    // 过期时间

好吧redis先简单介绍到这里吧。。。。。。。。。

小结:

  • redis是一种内存型的nosql数据库,因此读写性能特别快,通常用来做数据的缓存。
  • redis存储数据的方法是以key-value的形式。
  • redis的key通常都是字符串。
  • redis的value类型支持字符串、列表、哈希、等多种类型。
  • redis可以使用rdb和aof做数据的持久化存储,并且支持事物以及多实例等。
  • redis由于是内存型数据库,所以存储数据的大小受机器内存的影响。

转载于:https://www.cnblogs.com/caesar-id/p/10846541.html

初识redis(redis基础命令)相关推荐

  1. 数据库-初识Redis(基础命令)

    Redis基础命令 redis基础 基本数据类型 1.String 2.list 3.hash 4.set 5.zset 其他数据类型 HyperLogLog bitmap 位图 Geospatial ...

  2. redis的基础命令操作

    文章目录 前言 一.字符串类型 二.哈希类型 三.列表类型 四.集合类型 五.有序集合类型 六.通过命令 前言 redis的数据结构 redis存储的是key,value格式的数据,其中的key是字符 ...

  3. Redis从基础命令到实战之散列类型(Hash)

    从上一篇的实例中可以看出,用字符串类型存储对象有一些不足,在存储/读取时需要进行序列化/反序列化,即时只想修改一项内容,如价格,也必须修改整个键值.不仅增大开发的复杂度,也增加了不必要的性能开销. 一 ...

  4. redis 流 stream的使用总结 - 基础命令

    简言 1.   流(stream)是redist5.0版本新增加的数据结构,也是该版本最重要的更新,专门用于实现消息队列,事件系统 2.   redis之前的其他的数据结构实现消息队列,各有缺点 2. ...

  5. 【redis】redis基础命令,分布式锁,缓存问题学习大集合

    写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ...

  6. redis基础命令和数据操作命令学习笔记

    redis基础命令和数据操作命令学习笔记 基础命令 安装成功后,redis的启动命令:先修改配置文件.将服务改成默认运行.然后以配置文件启动服务 redis-server config/redis-c ...

  7. Redis 编译安装 基础命令 服务优化 持久化

    Redis Redis 基础 编译安装 Redis(来吧!展示!!) 基础命令!! Redis 数据持久化 RBD 配置文件展示 AOF 配置文件展示 Redis 性能管理 内存碎片率 内存使用率 回 ...

  8. 1.NoSQL之Redis配置与基础命令

    文章目录 前言 一.关系数据库与非关系型数据库 1.关系型数据库 2.非关系型数据库 3.关系型数据库和非关系型数据库区别 3.1数据存储方式不同 3.2 扩展方式不同 3.3 对事务性的支持不同 4 ...

  9. 【Redis】详细基础命令 - 学习笔记

    Redis 环境搭建及运行 安装(Ubuntu举例,其他系统类似) apt-get update && apt-get install redis-server -y 启动 redis ...

最新文章

  1. EL表达式隐含对象和jstl命名冲突,jstl无法取的值
  2. python可以处理什么文件夹_Python处理文件和文件夹的10条命令
  3. 浅谈:国内软件公司为何无法做大做强?
  4. c语言用队列stl加头文件,C++ STL List队列用法(实例)
  5. 《Web性能实践日志》一1.5 浏览器的发展
  6. ubantu 安装anaconad_Ubuntu16.04安装Anaconda (转)
  7. proteus仿真电路连线
  8. 使用CreatePen()创建自定义画笔
  9. 这个Q版卡通头像生成器,太符合程序员形象了
  10. java 二维卡尔曼滤波_卡尔曼滤波 – Kalman Filtering
  11. 估值470亿美元的WeWork,到底是什么?
  12. 《淮南师范学院学报》(双月刊)投稿须知
  13. php查询百度google收录情况,百度权重、pagerank、alexa及百度和谷歌收录情况查询接口...
  14. Gearman的安装和使用
  15. 知识管理软件之二 卡拉OK读小说 藏书库系列
  16. LightGBM是个什么东东?好像很耳熟啊,怎么玩啊?如何调参?一文搞定!
  17. FTP服务器和NFS服务器
  18. 犹抱琵琶半遮面--探究直播系统源码的真面目
  19. 安卓SharePreferences数据存储
  20. C# sogou地图API应用总结

热门文章

  1. [K/3Cloud]进度条控件编程接口
  2. RHEL6入门系列之十三,阶段练习1
  3. 深入理解SET NAMES和mysql(i)_set_charset的区别
  4. 汇编语言笔记14-端口
  5. 如何获取ResultSet的行数和列数
  6. javascript运行过程中的“预编译阶段”和“执行阶段”
  7. jQuery 多个 classes 选择器
  8. C++ STL泛型编程——在ACM中的运用
  9. Hadoop伪分布式配置试用+eclipse配置使用
  10. QQ采用什么传输协议?