专栏首页InvQ的专栏redis 入门(一)——Linux环境安装测试以及基本命令演示

redis 入门(一)——Linux环境安装测试以及基本命令演示

redis概述

redis是一个开源的,先进的 key-value 存储可用于构建高性能的存储解决方案。它支持数据结构有字符串,哈希,列表,集合,带有范围查询的排序集,位图,超文本和具有半径查询的地理空间索引。 NoSQL,Not Only [SQL],泛指非关系型的数据库。所以redis是一种nosql。敲黑板画重点:redis是一种nosql.

redis的优点:

异常快速 支持丰富的数据类型 操作都是原子的

下载安装

$ wget http://download.redis.io/releases/redis-3.2.6.tar.gz 
/root/redis tar xzf redis−3.2.6.tar.gz
/root/redis/redis-3.2.6   make
启动服务器:

 ```
    $ src/redis-server
 ```

 启动客户端

 ```
 $ src/redis-cli
 ```

启动:

redis-server redis-cli

11645:C 23 Apr 14:48:49.784 # Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.6 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 11645
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

11645:M 23 Apr 14:48:49.788 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
11645:M 23 Apr 14:48:49.788 # Server started, Redis version 3.2.6
11645:M 23 Apr 14:48:49.788 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
11645:M 23 Apr 14:48:49.788 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
11645:M 23 Apr 14:48:49.788 * DB loaded from disk: 0.000 seconds
11645:M 23 Apr 14:48:49.788 * The server is now ready to accept connections on port 6379

redis 支持的数据类型

启动客户端 ,存储字符串到redis.

127.0.0.1:6379> set name wonder
OK

取字符串:

127.0.0.1:6379> get name
"wonder"

哈希值

127.0.0.1:6379> hmset king username wonder password root age 22
OK
127.0.0.1:6379> hgetall king
1) "username"
2) "wonder"
3) "password"
4) "root"
5) "age"
6) "22"

Lists - 列表

127.0.0.1:6379> lpush pricess yiyue
(integer) 1
127.0.0.1:6379> lpush pricess chen
(integer) 2
127.0.0.1:6379> lpush privess yinli
(integer) 1
127.0.0.1:6379> lpush pricess yinli
(integer) 3
127.0.0.1:6379> lrange pricess 0 10
1) "yinli"
2) "chen"
3) "yiyue"
127.0.0.1:6379> 

Redis 有序集合

Redis有序集合类似Redis集合存储在设定值唯一性。不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关。

127.0.0.1:6379> zadd kindom 1 redis
(integer) 1
127.0.0.1:6379> zadd kindom 2 mongodb
(integer) 1
127.0.0.1:6379> zadd kindom 3 mysql
(integer) 1
127.0.0.1:6379> zadd kindom 3 mysql
(integer) 0
127.0.0.1:6379> zadd kindom 4 mysql
(integer) 0
127.0.0.1:6379> zrange kindom 0 10 withscores
1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

redis 发布订阅

开启客户端作为接受者

127.0.0.1:6379> subscribe myking messages
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "myking"
3) (integer) 1
1) "subscribe"
2) "messages"
3) (integer) 2

开启另一个客户端作为发送者:

127.0.0.1:6379> publish myking redis
(integer) 1
127.0.0.1:6379> publish myking "hello redis,you are a great caching technique"
(integer) 1

注意订阅端的变化:

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "myking"
3) (integer) 1
1) "subscribe"
2) "messages"
3) (integer) 2
1) "message"
2) "myking"
3) "redis"
1) "message"
2) "myking"
3) "hello redis,you are a great caching technique"

其他的一些操作

1.获取所以的key KEYS *

127.0.0.1:6379> keys *
1) "kindom"
2) "name"
3) "privess"
4) "king"
5) "pricess"

2.判断key是否存在

EXISTS key 存在返回 1,不存在返回 0

127.0.0.1:6379> exists privess
(integer) 1
127.0.0.1:6379> exists privesssssss
(integer) 0

3.删除key

DEL key [key …]

127.0.0.1:6379> del privess
(integer) 1
127.0.0.1:6379> keys *
1) "kindom"
2) "name"
3) "king"
4) "pricess"

4.获取数据类型

TYPE key

127.0.0.1:6379> type kindom
zset

5.向尾部添加

APPEND key value

127.0.0.1:6379> append name qqq
(integer) 9
127.0.0.1:6379> get name
"wonderqqq"

6.获取字符串长度

strlen key

127.0.0.1:6379> strlen name
(integer) 9

当然这里只是介绍简单的一些操作,复杂的参考官方文档。

在java应用中使用redis—jedis

前提是redis 已经安装,并且已经开启服务。

jedis 下载地址 https://github.com/xetorthio/jedis

Jedis is a blazingly small and sane Redis java client. Jedis was conceived to be EASY to use. 翻译: jedis是一个非常小的java客户端,被认为是容易使用。

怎么使用?

import redis.clients.jedis.Jedis;

import java.util.List;

public class TestRedisClient {
    public static void main(String[] args){

        Jedis jedis = new Jedis("10.20.112.33");
        System.out.println("Connection to server sucessfully");
        //check whether server is running or not
        System.out.println("Server is running: "+jedis.ping());
        jedis.lpush("wonder-list", "Redis");
        jedis.lpush("wonder-list", "Mongodb");
        jedis.lpush("wonder-list", "Mysql");
        // Get the stored data and print it
        List<String> list = jedis.lrange("wonder-list", 0 ,5);
        for(int i=0; i<list.size(); i++) {
            System.out.println("Stored string in redis:: "+list.get(i));
        }

    }
}
Connection to server sucessfully
Server is running: PONG
Stored string in redis:: Mysql
Stored string in redis:: Mongodb
Stored string in redis:: Redis

以上均为自己安装测试通过。

如果未开启服务,那么则会拒绝连接:

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:126)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:121)
    at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:106)
    at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:195)
    at TestRedisClient.main(TestRedisClient.java:11)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at redis.clients.jedis.Connection.connect(Connection.java:184)
    ... 6 more

其中遇到的问题有:

1.如何通过远程,Windows使用远程linux上的redis服务。

1.注释掉你的redis.conf 的bind ip 的配置 我这里将原来的127.0.0.1注释掉

2.设置 protect-mode no

3.关闭redis服务:redis-server stop 或者使用 ctrl + c

4.启动: redis-server 你的redis.conf 目录 如 /user/redis/src/redis-server /user/redis/redis.conf

启动的时候,可以指定配置文件启动

成功连接。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • redis 入门(二)——maven4.0 + Jedis2.9.0 + redis3.2.6 实战

    用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET等。基于这些限制,有必要考虑Redis!

    MickyInvQ
  • Error: Protocol error, got "H" as reply type byte

    原来是 启动 redis-server的时候 没有加上配置文件,于是把redis.conf 复制到/etc/下一份,

    MickyInvQ
  • 浮点数的基本数据类型不能用 == 比较

    比较两个浮点数,一个从零开始加 11 次 0.1,另一个用 0.1 乘以 11 计算。然后用 == 比较大小。

    MickyInvQ
  • 3.Redis常用命令:String

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息...

    陈树义
  • 06 . Prometheus监控Redis并配置Grafana

    https://www.cnblogs.com/you-men/p/12839535.html

    常见_youmen
  • Redis 从入门到起飞(上)

    1. Redis 介绍1.1 NoSQL 基本概念1.2 NoSQL 分类1.3 Redis 基本概念1.4 发展历史1.5 应用场景2. Redis 安装2....

    芋道源码
  • redis编译安装和常用操作

    报了一个错 You need tcl 8.5 or newer in order to run the Redis test

    明哥的运维笔记
  • 【1w字+干货】第一篇,基础:让你的 Redis 不再只是安装吃灰到卸载(Linux环境)

    Redis 基础以及进阶的两篇已经全部更新好了,为了字数限制以及阅读方便,分成两篇发布。(算是对一年多前 Redis 文章的一篇重制哇)

    BWH_Steven
  • Redis系列---操作命令及数据类型

    我们接下来操作的命令用的是Redis自带的客户端工具,在安装redis的目录下面有个redis-cli的,我们启动它即可,启动之前要先启动redis喔!

    Arebirth
  • redis(2)--持久化数据(备份)

    redis是一款内存数据库, 谁也无法保证服务器不宕机,那服务器宕机后内存数据就全丢了啊, 这是就需要提前把数据保存到磁盘,我们把这种操作称之为持久化.

    大大刺猬

扫码关注云+社区

领取腾讯云代金券

,,