Redis-Nosql数据库入门

简介

Redis是Nosql数据库的一种,可基于内存亦可持久化的日志型、是一个Key-Value数据库,多用在缓存方面

安装

  • Windows
    • 下载地址, 最新版本的Redis好像仅支持64位
    • Windos下载Redis文件后直接解压启动redis-server.exe即可,下图所示即启动成功
  • 然后这个cmd窗口不要关闭,启动同一目录下的redis-cli.exe 出现下面的窗口即服务端连接成功
  • Linux
    • 安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++
    • redis的源码包上传到linux系统。
    • 解压缩redis。
    • 编译。进入redis源码目录。执行指令:make
    • 安装。make install PREFIX=/usr/local/redis 其中 PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下

基本的安装到这里已经完成

redis的启动

  • 前端启动:在redis的安装目录下直接启动redis-server , [root@localhost bin]# ./redis-server
  • 后台启动
    • 把/root/redis-3.0.0/redis.conf复制到/usr/local/redis/bin目录下 [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/
    • 修改配置文件daemonize yes 然后启动redis [root@localhost bin]# ./redis-server redis.conf 这种启动方式为指定配置文件的启动方式
  • 查看redis进程 [root@localhost bin]# ps aux|grep redis 会显示两行, 一行为redis进程 一行为查询语句的进程

redis 客户端连接

  • [root@localhost bin]# ./redis-cli 默认连接localhost运行在6379端口的redis服务,连接本地服务。
  • [root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379 -h:连接的服务器的地址 -p:服务的端口号

redis内的五种数据类型

redis是一个key-value数据库, 即通过key可以取到存储的value类型的数据 , 下面是五种类型

redis中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。

key-value(键值对)

下面是几种常用的命令

    get()  通过key获取value

    set()  设置key,value

    getset()  先取到这个key的value然后再设置value

    del()  删除key

    appen() 拼接字符串

key-fields-values(Hash)

下面是hash的存储结构

使用示例 在实例中,我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 runoobkey 中。

常用命令

    hset key field value    // 存储

    hmset key field value field2 value.....  // 存多个

    hget key field   // 取值

    hmget key field field2 field3.....  // 取多个

    hgetall key // 取出全部

    hdel key field field2 // 删除多个

    del key  // 删除整个hash

    incrby key field incrument  // 增加值

    hexists key field  // 判断指定key中的field是否存在
     
    hlen key   // 获取key中包含的field

    hkeys key // 获取所有的key

    hvals key // 获取所有的value

    hlen key // 找到对应的key的长度

list(队列)

存储结构, 这个存储结构可以两端都可以进行插入和删除

使用示例, 在实例中我们使用了 LPUSH 将三个值插入了名为 runoobkey 的列表当中。

    lpush key values[value2 ..]   // 从左边压

    rpush key values[value2 ..]   // 从右边压

    lrange key start end  // 从左边取

    lpop key  // 左边弹栈(移出并且取出)

    rpop key  // 左右弹栈(移出并且取出)

    llen key  // 返回list长度

    lpushx key value // 如果key存在,则向头插入,不存在,则不进行

    lrem key conunt value  // 从左往右删除conunt个value的,count<0 则为从右往左 , 等于0 删除所有value元素

    lset key index value //  在位置index插入值,0代表头,-1代表尾

set 存储结构和list相同,不过不允许有相同的元素,并且只能从一端来进行操作,并且set内的元素没有顺序

使用示例,在实例中我们通过 SADD 命令向名为 runoobkey 的集合插入的三个元素。

常用操作

    sadd key values[...]   // 添加多个元素

    srem key members[...]  // 删除多个

    sismember key member  // 检查元素是否存在

    smembers key  // 查询

    sdiff key1,key2...  // 求key1 和 key2的差集

    sinter key1,key2 ...  // 返回key1和key2的交集

    sunion key1,key2 ...  // 返回key1和key2的并集

    scard key  // 获取key中的长远数量

    srandmember key   // 从key中随机获取一个值

sortedset,有序的set,排序方式根据权重来排序 所以在添加元素的时候需要给每个元素设置一个权重

使用示例 在实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。

基本操作

    zadd key score member score2 member2  // 添加成员

    zrange key start end   // 获取集合角标 start - end的元素

    zrange key start end  withscores // 获取集合角标 start - end的元素 , 并且按照权重排序

    zcard key  // 获取成员数量

    zscore key member  // 返回指定成员变量的权重

    zrevrange key start end withscore // 按照分数从大到小返回

    zremrangebyrank key start stop // 按照排名范围删除元素(从小到大)

    zremrangebyscore key min max // 按照分数范围删除元素

    zrangebyscore key min max [withscores][limit offset count]  // 返回分数在min-max范围内的数,从高到低 limit: 表示从offset下标元素开始并返回count个成员变量

    zincrby key increment member   // 指定成员变量增加的分数

    zcount key min max  // 返回分数在min - max内的成员

    zrank key member // 返回成员在集合中排序(从小到大)

    zrevrank key member // 返回成员在集合中排序(从大到小)

上面就是redis中的五种数据结构,可以根据业务具体需求来选择对应的机构

通用操作

    kess pattern  // 筛选 * 表示任意一个或多个字符 ? 表示任意一个

    del key1,key2..  // 删除指定key

    exists key // 判断key是否存在

    rename key newkey // 为当前key重命名

    expire key number //设置过期时间(单位:秒)

    ttl key // 获取该key所剩的超时时间, -1 : 没设置超时 -2:key不存在

    type key  // 获取key的类型

    flushall // 删除所有数据库中的key

redis的可视化工具 RedisDesktopManager 官方网站下载即可, 打开软件输入host地址就能连接,进行可视化操作

![](http://images2017.cnblogs.com/blog/1260476/201712/1260476-20171206125530191-2075700718.png)

redis在java上的工具类 jedis 可以参照api进行使用 , 使用方式和jdbc相似.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏彭湖湾的编程世界

【PHP】文件写入和读取详解

文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 ...

4037
来自专栏深度学习之tensorflow实战篇

R语言的数据导入与导出(write.table,CAT)

福尔·摩斯曾说过:“数据,数据,没有数据的推理是罪恶!”不过比起有意思的统计分析,数据的导入与导出显得十分的无趣,但是不得不说统计分析的数据导入与导出是个让人沮...

8307
来自专栏Python攻城狮

Python系统编程-进程1.进程1.多任务的引入2.多任务的概念

有很多的场景中的事情是同时进行的,比如开车的时候手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的;

853
来自专栏逢魔安全实验室

铁人三项2018 pwn [heapmain] Writeup

这个题目的原题是RHME3,直接拿来二进制修改,去掉网络函数,使用socat部署。这波操作可还行

1042
来自专栏深度学习之tensorflow实战篇

mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比

mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比 MongoDB 聚合 MongoDB中聚合(aggregate)主要...

3615
来自专栏安恒网络空间安全讲武堂

二进制学习系列-栈溢出之libc_init

这是一道ctf wiki上面的一道中级ROP,思路很明确,但是还是有些小坑,比如说write函数上面,还有pwntools函数上面等等…

2983
来自专栏前端小栈

vim简单操作指南-cheat sheet

893
来自专栏Jimoer

JVM学习记录-Java内存模型(一)

Java虚拟机规范中定义了一种Java的内存模型,即Java Memoory Model(简称JMM),用来实现让Java程序在各个平台下都能达到一致的内存访问...

994
来自专栏容器云生态

关于vim的简单设置以及使用技巧

vim快速指南: vim 使用技巧: 1、认识.命令 最理想的编辑模式:一次按键移动,一次编辑操作 .命令可以重复上一次的修改操作 在普通模式下: j...

2419
来自专栏Jimoer

JVM学习记录-线程安全与锁优化(一)

线程:程序流执行的最小单元。线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I...

702

扫码关注云+社区