归纳安装,详细示例

一、安装redis:

1.下载:

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

 2.解压

tar -zxvf redis-3.2.8.tar.gz

 

3.复制,放到/usr/local目录下

sudo mv ./redis-3.2.8 /usr/local/redis

 

4.进入到redis目录下

cd /usr/local/redis/

 

5.生成

sudo make

 

6.测试,时间会相比较长

sudo make test

 

7.设置,将redis的指令安装到usr/local/bin/目录中

sudo make install

 

8.设置成功后,进入usr/local/bin/目录中查阅:

cd /usr/local/bin

 

 美高梅开户网址 1

9.将计划文件复制放到/etc/redis目录下:

sudo cp /usr/local/redis/redis.conf /etc/redis/redis.conf

 

 大概刚初阶etc下没有redis目录,需求协调手动创制三个redis文件夹。

以上在第⑥步的时候或许会遇见那样的标题:

You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1

 

消除办法:安装tcl 

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  
cd  /usr/local/tcl8.6.1/unix/  
sudo ./configure  
sudo make  
sudo make install 

 

一、安装redis:

一、redis简介

 

Redis是一种面向”键/值”对数据类型的内部存款和储蓄器数据库,能够满意大家对海量数据的读写必要。

redis的键只好是字符串

redis的值协理各种数据类型:

        1:字符串 string

        2:哈希 hash

        3:字符串列表 list

        4:字符串集合 set 不重复(只用于string),严节

        5:有序聚集sorted set ,不另行,有序

        6:HyperLogLog 结构(redis2.8.9本子才有,用来做基数总计的算法。)

特点:

高品质(Redis读的速度是11W次/s,写的快慢是8.1W次/s)

原子性(保险数据的准头,原子操作,)

从头到尾存款和储蓄(二种方法奥迪Q3DB/快速照相,AOF/日志)

主导结构(master-slave,负载均衡,高可用)

集群(3.0版本)

 

 

行使:应用在高并发和实时请求的景色。

搜狐和讯

hash:关切列表,观者列表

string:今日头条数,观者数(防止接纳select count(*) from…)

sorted set:TopN,热门博客园

 

美高梅开户网址 2

 

redis使用的是c语言实验的

 

Redis 简介

Redis 是全然开源免费的,坚守BSD协议,是1个高品质的key-value数据库。

Redis 与别的 key – value 缓存产品有以下多个特点:

  • Redis帮助数据的持久化,能够将内部存款和储蓄器中的多里正存在磁盘中,重启的时候能够另行加载进行利用。
  • Redis不仅仅扶助简单的key-value类型的数目,同时还提供list,set,zset,hash等数据结构的积存。
  • Redis支持数据的备份,即master-slave形式的数据备份。

二、 配置redis:

布署音信在/etc/redis/redis.conf下,打开sudo vi
/etc/redis/redis.conf。

主干配置选项:

绑定ip:bind 127.0.0.1

端口号:port 6379

是还是不是以守护进程运行:daemonize yes  必须改为yes

数据库文件:dbfilename dump.db  

数据库文件存款和储蓄路径:dir
/var/lib/redis  可改可不改,改的话提前创设好文件夹

日记文件:logfile
/var/log/redis/redis-server.log  必供给改,提前创设好文件夹

数据库,默认有16个:database 16

主从复制:slaveof

布置小结:首要更改两块:1,守护进度;2.日志文件路径

1.下载:

二 、环境搭建

Redis 优势

  • 属性极高 – Redis能读的进程是1一千0次/s,写的速度是81000次/s 。
  • 加上的数据类型 – Redis辅助二进制案例的 Strings, Lists, Hashes, Sets
    及 Ordered Sets 数据类型操作。
  • 原子 –
    Redis的有着操作都以原子性的,意思就是要么成功实施恐怕失利完全不执行。单个操作是原子性的。七个操作也支撑工作,即原子性,通过MULTI和EXEC指令包起来。
  • 添加的风味 – Redis还协助 publish/subscribe, 文告, key 过期等等特色。

三、启动redis:

1.基于配置文件运维redis服务器

sudo redis-server /etc/redis/redis.conf 

 

2.启动redis客户端:

redis-cli

 

3.输入ping命令测试:

127.0.0.1:6379> ping
PONG

 

4.关闭redis服务器:

ps aux|grep redis    # 查看redis进程号
kill -9 pid redis进程号    # 关闭redis服务器

 

5.切换数据库:默许有拾九个,通过0-15来标识,默许是率先个数据库0号数据库。

select n

 

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

先是安装c的编译环境

yum -y install cpp

yum -y install binutils

yum -y install glibc

yum -y install glibc-kernheaders

yum -y install glibc-common

yum -y install glibc-devel

yum -y install gcc

yum -y install make

若果地点的软件都安装之后再实施make命令还报错,就须要在make命令前边加个选项了

make MALLOC=libc

美高梅开户网址 3

美高梅开户网址 4

 

美高梅开户网址 5

美高梅开户网址 6

 

美高梅开户网址 7

美高梅开户网址 8

 

 

美高梅开户网址 9

美高梅开户网址 10

 

 

 

美高梅开户网址 11

美高梅开户网址 12

 

美高梅开户网址 13

美高梅开户网址 14

 

美高梅开户网址 15

美高梅开户网址 16

 

美高梅开户网址 17

美高梅开户网址 18

 

 

Redis与别的key-value存款和储蓄有哪些区别?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,那是3个分裂于别的数据库的迈入路径。Redis的数据类型都以依照基本数据结构的同时对程序员透明,无需实行额外的架空。
  • Redis运维在内部存款和储蓄器中只是可以持久化到磁盘,所以在对不一样数额集实行高效读写时索要权衡内部存款和储蓄器,因为数据量无法凌驾硬件内部存款和储蓄器。在内部存储器数据库方面包车型大巴另三个优点是,比较在磁盘上亦然的扑朔迷离的数据结构,在内存中操作起来分外简单,那样Redis能够做过多之中复杂性很强的作业。同时,在磁盘格式方面他们是一体的以充实的措施产生的,因为他们并不必要举行随机访问。

四 、redis的数目操作:

1.redis的囤积格式为key-value格式。key是字符串类型,value的连串有5种:string、hash、list、set、zset。

2.redis中有关键的科学普及的操作:

2.1翻看左右的键:keys *

2.2查看有个别键是不是存在,存在再次回到1不设有再次来到0:exists
key1

2.3查看键的值对应的数据类型:type
key1

2.4去除键值对:del key1 key2

2.5设置键的过期时间,要是没有点名私下认可一向留存:expire
key seconds

2.6查看键的有用时间:ttl key1

2.7清空数据库:flushall

3.string类型的基本操作:

3.1保存

  • set key value  保存单个键值对
  • mset key1 value1 key2
    value2  保存七个键值对
  • setex key seconds
    value  设置键值和过期时间
  • append key value追加值

3.2获取

  • get key  获取单个
  • mget key1 key2  获取多少个

3.3删除

  • del key

4 hash类型的基本操作:

4.1保存

hset key field value    #设置单个属性
hmset key field1 value1 field2 value2 ...    #设置多个属性

 

4.2获取

hkeys key    # 获取指定键的所有属性
hget key field    # 获取单个属性的值
hmget key field1 field2 ...    # 获取多个属性的值
hvals key    # 获取所有属性的值

 

4.3删除

del key    # 删除整个hash的键和值
hdel key field1 field2 ...    # 删除属性和属性对应的值

 

4.4关于hash类型的私人住房知道:

能够将hash类型领悟为用来储存对象:

美高梅开户网址 19

 

 5。list类型的基本操作:

5.1保存

lpush key value1 value2 ...    #从左侧依次插入数据
rpush key value1 value2 ...    #从右侧依次插入数据
linsert key before或after 现有元素 新元素    #从指定元素的前或后插入新元素

 

 5.2获取

lrange key start stop    

 

 start、stop为成分的下标索引,从右边初步,第一个因素为0,-1标识最后3个因素。获取具有的要素:lrange
key 0 -1

5.3刨除内定成分

lrem key count value

 

 将列表中前count次面世的值为value的因素移除。

count > 0: 从头到尾移除

count < 0: 从尾到头移除

count = 0: 移除全部

 6.set类型的基本操作

天性:冬天聚集、成分唯一性不另行、没有改动操作

6.1增欧成分

sadd key member1 member2 ...

 

 6.2得到成分

smembers key    # 返回所有元素

 

6.3剔除钦定成分

srem key member1 member2 ...

 

 

 7.zset类型的多少操作

特点:有序聚集、成分唯一性不重复、没有改动操作、各种成分都会提到1个double类型的权重,依照权重从小到大排列

7.1增加

zadd key score1 member1 score2 member2 ...

 

7.2获取

zrange key start stop  # 根据索引获取

zrangebyscore key min max  # 获取权重在min和max之间的数据
zscore key member  # 返回成员member的score值

 

7.3删除

zrem key member1 member2 ...    # 删除指定元素
zremrangebyscore key min max    #删除权重在指定范围的元素

2.解压

redis安装配置(单机)

redis官网:

解压:tar -zxvf redis-2.8.19.tar.gz

归纳安装,详细示例。编译、安装

make

make
install(将redis-3.0.0/src目录上面的可执行文件拷贝到/usr/local/bin目录上面,效能是在其余目录下举行脚本不要求内定相对路径或然须求切换成路径才能履行脚本,也就是添加环境变量(将src配置到PATH))

 

加压缩后,执行make命令编写翻译redis

美高梅开户网址 20

make install

美高梅开户网址 21

 

拷贝配置文件

cp redis/redis.conf /etc/

美高梅开户网址 22

修改配置文件redis.conf

美高梅开户网址 23

daemonize yes(后台运转)

美高梅开户网址 24

logfile /usr/local/redis/log(后台运维的日志文件存放路径)

美高梅开户网址 25

 

启动

redis-server /etc/redis.conf [–port 6379]

美高梅开户网址 26

美高梅开户网址 27

美高梅开户网址 28

redis客户端(client,连接受地点的数据库)

redis 数据类型

Redis帮助四种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted
set:有序聚集)。

伍 、redis与python进行相互:

 1.在虚拟环境中设置redis包:

pip install redis

 

 2.调用模块:

from redis import StrictRedis

 

 3.创设对象:

sr = StrictRedis(host='localhost', port=6379, db=0)  # 默认就是这样的值,不写也行。

 

 4.用sr这一个目的操作redis,将redis中的命令当作函数让sr调用就ok。

tar -zxvf redis-3.2.8.tar.gz

redis-cli [-h 127.0.0.1] [-p 6379]

美高梅开户网址 29

美高梅开户网址 30

-h(连接的是哪3个数据库)-p(是端口号)

美高梅开户网址 31

关闭

redis-cli shutdown

 

美高梅开户网址 32

 

 

 

 

 

别的路线都足以调用bin目录下的shell脚本,

美高梅开户网址 33

美高梅开户网址 34目录上面

美高梅开户网址 35

(启动)redis-server

美高梅开户网址 36

美高梅开户网址 37

 

 

 

 

maven依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.4.2</version>
    </dependency>
</dependencies>

⑥ 、Django框架中session存款和储蓄到redis中的配置

暗中认可情形下session是储存在数据库中的,不过当用session保存用户的情景时,用户频仍的造访服务器,会附加数据库的压力,也会稳中有降用户访问的快慢。为了化解那几个标题将session存款和储蓄到redis中。

首先种配备方式:(不接纳Django中session暗中认可的贮存方式,直接将session存款和储蓄的地点陈设到redis中)

# 1.在虚拟环境中安装包
pip install django-redis-sessions==0.5.6

# 2.在Django项目的settings文件中增加下面的配置
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

 

 第二种配备格局:(先将Django中的缓存设置为redis,然后将session的储存地点设置为Django的缓存中)

#1.先在虚拟环境中安装包
pip install django_redis

#2. 设置redis作为django的缓存设置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        # 把这里缓存你的redis服务器ip和port
        "LOCATION": "redis://172.16.179.142:6379/12",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 3.设置redis存储django的session信息
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

 

3.复制,放到/usr/local目录下

daemonize yes(后台运营)

Jedis API 操作示例

sudo mv ./redis-3.2.8 /usr/local/redis

logfile /usr/local/redis/log(日志文件)

 

 

 

 

 

 

 

Jedis 连接池

老是Jedis线程安全单列形式可布置四个redis数据源的连接池。

public class JedisApi {

    private static final Logger LOG = LoggerFactory.getLogger(JedisApi.class);

    private volatile static JedisApi jedisApi;

    /**
     * 保存多个连接源
     */
    private static Map<String, JedisPool> poolMap = new HashMap<String, JedisPool>();

    private JedisApi() {
    }

    /**
     * @Description: jedisPool 池
     * @Param: [ip, port]
     * @return: redis.clients.jedis.JedisPool
     * @Author: imdalai
     * @Date: 2018/1/15
     */
    private static JedisPool getPool(String ip, int port) {

        try {
            String key = ip + ":" + port;
            JedisPool pool = null;
            if (!poolMap.containsKey(key)) {
                JedisPoolConfig config = new JedisPoolConfig();
                config.setMaxIdle(RedisConfig.MAX_IDLE);
                config.setMaxTotal(RedisConfig.MAX_ACTIVE);
                //  在获取连接的时候检查有效性, 默认false
                config.setTestOnBorrow(true);
                //  在空闲时检查有效性, 默认false
                config.setTestOnReturn(true);
                pool = new JedisPool(config, ip, port, RedisConfig.TIME_OUT);
                poolMap.put(key, pool);
            } else {
                pool = poolMap.get(key);
            }
            return pool;
        } catch (Exception e) {
            LOG.error("init jedis pool failed ! " + e.getMessage(), e);
        }
        return null;
    }

    /**
     * @Description: 线程安全单列模式
     * @Param: []
     * @return: JedisApi
     * @Author: imdalai
     * @Date: 2018/1/15
     */
    public static JedisApi getRedisApi() {

        if (jedisApi == null) {
            synchronized (JedisApi.class) {
                if (jedisApi == null) {
                    jedisApi = new JedisApi();
                }
            }
        }
        return jedisApi;
    }

    /**
     * @Description: 获取一个jedis连接
     * @Param: [ip, port]
     * @return: redis.clients.jedis.Jedis
     * @Author: imdalai
     * @Date: 2018/1/15
     */
    public Jedis getRedis(String ip, int port) {
        Jedis jedis = null;
        int count = 0;
        while (jedis == null && count <= RedisConfig.RETRY_NUM) {
            try {
                jedis = getPool(ip, port).getResource();
            } catch (Exception e) {
                LOG.error("get redis failed ! " + e.getMessage(), e);
                count++;
            }
        }
        return jedis;
    }

    /**
     * @Description: 释放jedis到jedisPool中
     * @Param: [jedis, ip, port]
     * @return: void
     * @Author: imdalai
     * @Date: 2018/1/15
     */
    public void closeRedis(Jedis jedis) {

        if (jedis != null) {
            try {
                jedis.close();
            } catch (Exception e) {
                LOG.error("colse jedis failed ! " + e.getMessage(), e);
            }
        }
    }
}

4.进入到redis目录下

查进程ps –ef|grep redis

 

停止

美高梅开户网址 38

停下后需求再一次开动才能进入

美高梅开户网址 39

 

 

键(key)

public static void testKey() {
    System.out.println("====key功能展示====");
    try {
        jedis.select(0);
        System.out.println("清除数据:" + jedis.flushDB());
        System.out.println("判断某个键是否存在:" + jedis.exists("1"));
        System.out.println("新增{1,a}键值对:" + jedis.set("1", "a"));
        System.out.println(jedis.exists("1"));
        System.out.println("新增{2,b}键值对:" + jedis.set("2", "b"));
        System.out.println("系统中所有的键如下:" + jedis.keys("*").toString());
        System.out.println("删除键 1:" + jedis.del("1"));
        System.out.println("判断键 1是否存在:" + jedis.exists("1"));
        System.out.println("设置键 2的过期时间为5s:" + jedis.expire("2", 5));
        TimeUnit.SECONDS.sleep(2);
        System.out.println("查看键 2的剩余生存时间:" + jedis.ttl("2"));
        System.out.println("移除键 2的生存时间:" + jedis.persist("2"));
        System.out.println("查看键 2的剩余生存时间:" + jedis.ttl("2"));
        System.out.println("查看键 2所存储的值的类型:" + jedis.type("2"));
        System.out.println("查看键 2的值:" + jedis.get("2"));

        System.out.println("");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

出口结果:

====key作用展现====
排除数据:OK
认清有个别键是还是不是存在:false
新增{1,a}键值对:OK
true
新增{2,b}键值对 :OK
系统中拥有的键如下:[1, 2]
删除键 1:1
认清键 1是还是不是存在:false
设置键 2的过期时间为5s:1
查看键 2的剩下生存时间:3
移除键 2的生活时间:1
查看键 2的盈余生存时间:-1
查看键 2所蕴藏的值的花色:string
查看键 2的值:b

cd /usr/local/redis/

叁 、redis的特点【多数据库】

大部据库

各个数据库对外都以以二个从0初步的递增数字命名,不援助自定义的    

redis暗中同意帮忙17个数据库,能够通过修改databases参数来修改这些私下认可值

redis暗中认可选用的是0号数据库

SELECT 数字: 能够切换数据库

多个数据库之间并不是一点一滴切断的,flushall

 

 

 

0-15,修改配置文件(修改数值)

 

美高梅开户网址 40

 

美高梅开户网址 41

数据库之间是互相隔绝的

美高梅开户网址 42

清空全体的数据库(停掉那么些命令)

美高梅开户网址 43

 

字符串、整型和浮点数

string是redis最中央的种类,你能够理解成与Memcached一模一样的系列,3个key对应三个value。

string类型是二进制安全的。意思是redis的string能够涵盖其余数据。比如jpg图片也许系列化的对象

string类型是Redis最中央的数据类型,三个键最大能储存512MB。

字符串

public static void testString() {
    try {
        jedis.select(1);
        jedis.flushDB();
        System.out.println("====字符串功能展示====");
        System.out.println("增:");
        System.out.println(jedis.set("a", "1"));
        System.out.println(jedis.set("b", "2"));
        System.out.println(jedis.set("c", "3"));
        System.out.println("删除键 a:" + jedis.del("a"));
        System.out.println("获取键 a:" + jedis.get("a"));
        System.out.println("修改键 b:" + jedis.set("b", "bChanged"));
        System.out.println("获取键 b 的值:" + jedis.get("b"));
        System.out.println("在键 c后面加入值:" + jedis.append("c", "End"));
        System.out.println("获取键 c的值:" + jedis.get("c"));
        System.out.println("增加多个键值对:" + jedis.mset("key01", "value01", "key02", "value02", "key03", "value03"));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03", "key04"));
        System.out.println("删除多个键值对:" + jedis.del(new String[]{"key01", "key02"}));
        System.out.println("获取多个键值对:" + jedis.mget("key01", "key02", "key03"));

        jedis.flushDB();
        System.out.println("新增键值对防止覆盖原先值:");
        System.out.println(jedis.setnx("key001", "value001"));
        System.out.println(jedis.setnx("key002", "value002"));
        System.out.println(jedis.setnx("key002", "value002-new"));
        System.out.println("获取键key001的值:" + jedis.get("key001"));
        System.out.println("获取键key002的值:" + jedis.get("key002"));

        System.out.println("新增键值对并设置有效时间:");
        System.out.println(jedis.setex("key003", 2, "value003"));
        System.out.println("获取键key003的值:" + jedis.get("key003"));
        TimeUnit.SECONDS.sleep(3);
        System.out.println("获取键key003的值:" + jedis.get("key003"));

        System.out.println("获取原值,更新为新值:");
        System.out.println(jedis.getSet("key002", "key2GetSet"));
        System.out.println("获取键key002的值:" + jedis.get("key002"));

        System.out.println("截取key002的值的字符串:" + jedis.getrange("key002", 2, 5));

        System.out.println("");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

输出结果:

====字符串成效体现====
增:
OK
OK
OK
删除键 a:1
获取键 a:null
修改键 b:OK
获取键 b 的值:bChanged
在键 c前边插足值:4
获取键 c的值:3End
日增多个键值对:OK
获得多少个键值对:[value01, value02, value03]
赢得多少个键值对:[value01, value02, value03, null]
剔除五个键值对:2
取得八个键值对:[null, null, value03]
新增键值对预防覆盖原先值:
1
1
0
获取键key001的值:value001
获取键key002的值:value002
新增键值对并设置有效时间:
OK
获取键key003的值:value003
获取键key003的值:null
得到原值,更新为新值:
value002
获取键key002的值:key2GetSet
截取key002的值的字符串:y2Ge

平头和浮点数

public static void testNumber() {
    try {
        jedis.select(2);
        jedis.flushDB();
        System.out.println("====整数和浮点数功能展示====");
        jedis.set("key001", "1");
        jedis.set("key002", "2");
        jedis.set("key003", "3.3");
        System.out.println("获取键key001的值:" + jedis.get("key001"));
        System.out.println("获取键key002的值:" + jedis.get("key002"));
        System.out.println("将键key001的值+1:" + jedis.incr("key001"));
        System.out.println("获取键key001的值:" + jedis.get("key001"));
        System.out.println("将键key002的值-1:" + jedis.decr("key002"));
        System.out.println("获取键key002的值:" + jedis.get("key002"));
        System.out.println("将key001的值加上整数5:" + jedis.incrBy("key001", 5));
        System.out.println("获取key001的值:" + jedis.get("key001"));
        System.out.println("将key002的值减去整数5:" + jedis.decrBy("key002", 5));
        System.out.println("获取key002的值:" + jedis.get("key002"));

        System.out.println("");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

输出结果:

====整数和浮点数成效展现====
获取键key001的值:1
获取键key002的值:2
将键key001的值+1:2
获取键key001的值:2
将键key002的值-1:1
获取键key002的值:1
将key001的值加上整数5:7
获取key001的值:7
将key002的值减去整数5:-4
获取key002的值:-4

5.生成

④ 、redis基础命令

获取符合规则的键名称

keys 表达式(?,* ,[],\?)

判定2个键是否存在

exists key

删除键

del key

del key1 key2

批量删减

redis-cli del `redis-cli keys “key*”`

得到键值的数据类型type

重回值也许是那五种类型(string,hash,list,set,zset)

留意:redis不区分命令大小写

 

 

 

List(列表)

Redis
列表是简不难单的字符串列表,依据插入顺序排序。你能够拉长3个因素到列表的头顶(左侧)也许底部(左边)。

public static void testList() {

    jedis.select(3);
    jedis.flushDB();
    System.out.println("====列表list功能展示====");
    jedis.lpush("collections", "ArrayList", "LinkedList", "Vector", "Stack", "queue");
    jedis.lpush("collections", "HashMap");
    jedis.lpush("collections", "HashMap");
    jedis.lpush("collections", "HashMap");
    jedis.lpush("collections", "HashMap");
    jedis.lpush("number", "1");
    jedis.lpush("number", "2");
    jedis.lpush("number", "3");
    // -1 代表倒数第一个
    System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("collections区间0-2内容:" + jedis.lrange("collections", 0, 2));
    System.out.println("=================");
    // 删除列表指定的值 ,第二个参数为删除的个数(有重复时),后add进去的值先被删,类似于出栈
    System.out.println("删除指定元素个数:" + jedis.lrem("collections", 2, "HashMap"));
    System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("删除区间0-4以外的数据:" + jedis.ltrim("collections", 0, 4));
    System.out.println("collections 的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("collections列表出栈(左端):" + jedis.lpop("collections"));
    System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("collections添加元素,从列表右端,与lpush相对应:" + jedis.rpush("collections", "EnumMap"));
    System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("collections列表出栈(右端):" + jedis.rpop("collections"));
    System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("修改collections指定下标1的内容:" + jedis.lset("collections", 1, "LinkedArrayList"));
    System.out.println("collections的内容:" + jedis.lrange("collections", 0, -1));
    System.out.println("=================");
    System.out.println("collections的长度:" + jedis.llen("collections"));
    System.out.println("获取collections下标为2的元素:" + jedis.lindex("collections", 2));
    System.out.println("=================");
    jedis.lpush("sortedList", "3", "6", "2", "0", "7", "4");
    System.out.println("sortedList排序前:" + jedis.lrange("sortedList", 0, -1));
    System.out.println(jedis.sort("sortedList"));
    System.out.println("sortedList排序后:" + jedis.lrange("sortedList", 0, -1));

    System.out.println("");  
}

出口结果:

====列表list效能呈现====
collections 的内容:[HashMap, HashMap, HashMap, HashMap, queue,
Stack, Vector, LinkedList, ArrayList]
collections区间0-2内容:[HashMap, HashMap, HashMap]
=================
剔除钦赐成分个数:2
collections 的内容:[HashMap, HashMap, queue, Stack, Vector,
LinkedList, ArrayList]
删除区间0-4以外的数据:OK
collections 的内容:[HashMap, HashMap, queue, Stack, Vector]
collections列表出栈(左端):HashMap
collections的内容:[HashMap, queue, Stack, Vector]
collections添新币素,从列表右端,与lpush相对应:5
collections的内容:[HashMap, queue, Stack, Vector, EnumMap]
collections列表出栈(右端):EnumMap
collections的内容:[HashMap, queue, Stack, Vector]
修改collections钦点下标1的内容:OK
collections的内容:[HashMap, LinkedArrayList, Stack, Vector]
=================
collections的长度:4
获取collections下标为2的元素:Stack
================
sortedList排序前:[4, 7, 0, 2, 6, 3]
[0, 2, 3, 4, 6, 7]
sortedList排序后:[4, 7, 0, 2, 6, 3]

sudo make

keys *(查询全体的键,*是通配符)

美高梅开户网址 44

keys crxy*

 

key crxy?

美高梅开户网址 45

\?(转义字符查询问号)

集合(Set)

Redis的Set是string类型的冬季聚集。

会合是透过哈希表完结的,所以添加,删除,查找的复杂度都是O(1)。

public static void testSet() {
    try {
        jedis.select(4);
        jedis.flushDB();
        System.out.println("========测试集合(set)=========");
        System.out.println("集合set添加数据:" + jedis.sadd("setElement", "e1", "e7", "e3", "e6", "e0", "e4"));
        System.out.println(jedis.sadd("setElement", "e6"));
        System.out.println("setElement的所有元素:" + jedis.smembers("setElement"));
        System.out.println("删除元素e0:" + jedis.srem("setElement", "e0"));
        System.out.println("setElement的所有元素:" + jedis.smembers("setElement"));
        System.out.println("删除两个元素e7和e6:" + jedis.srem("setElement", "e7", "e6"));
        System.out.println("setElement的所有元素为:" + jedis.smembers("setElement"));
        System.out.println("随机的移除集合中的一个元素:" + jedis.spop("setElement"));
        System.out.println("随机的移除集合中的一个元素:" + jedis.spop("setElement"));
        System.out.println("setElement的所有元素为:" + jedis.smembers("setElement"));
        System.out.println("setElement中包含元素的个数:" + jedis.scard("setElement"));
        System.out.println("e3是否在setElement中:" + jedis.sismember("setElement", "e3"));
        System.out.println("e1是否在setElement中:" + jedis.sismember("setElement", "e1"));

        System.out.println("=================");
        System.out.println(jedis.sadd("setElement1", "e1", "e2", "e4", "e3", "e0", "e8", "e7", "e5"));
        System.out.println(jedis.sadd("setElement2", "e1", "e2", "e4", "e3", "e0", "e8"));
        System.out.println("将setElement1中删除e1并存入setElement3中:" + jedis.smove("setElement1", "setElement3", "e1"));
        System.out.println("将setElement1中删除e2并存入setElement3中:" + jedis.smove("setElement1", "setElement3", "e2"));
        System.out.println("setElement1中的元素:" + jedis.smembers("setElement1"));
        System.out.println("setElement3中的元素:" + jedis.smembers("setElement3"));

        System.out.println("集合运算:");
        System.out.println("setElement1中的元素:" + jedis.smembers("setElement1"));
        System.out.println("setElement2中的元素:" + jedis.smembers("setElement2"));
        System.out.println("setElement1和setElement2的交集:" + jedis.sinter("setElement1", "setElement2"));
        System.out.println("setElement1和setElement2的并集:" + jedis.sunion("setElement1", "setElement2"));
        // setElement1中有,setElement2中没有
        System.out.println("setElement1和setElement2的差集:" + jedis.sdiff("setElement1", "setElement2"));

        System.out.println("");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

出口结果:

========测试集合(set)=========
集合set添加多少:6
0
setElement的持有因素:[e3, e6, e1, e7, e0, e4]
去除成分e0:1
setElement的装有因素:[e6, e3, e1, e7, e4]
剔除多个因素e7和e6:2
setElement的全体因素为:[e3, e1, e4]
随意的移除集合中的3个成分:e3
轻易的移除集合中的二个成分:e4
setElement的装有因素为:[e1]
setElement中包蕴成分的个数:1
e3是否在setElement中:false
e1是否在setElement中:true
=================
8
6
将setElement1中删除e1并存入setElement3中:1
将setElement1中删除e2并存入setElement3中:1
setElement1中的元素:[e5, e8, e3, e7, e0, e4]
setElement3中的元素:[e1, e2]
会见运算:
setElement第11中学的成分:[e5, e8, e3, e7, e0, e4]
setElement2中的成分:[e3, e4, e2, e8, e1, e0]
setElement1和setElement2的交集:[e3, e4, e8, e0]
setElement1和setElement2的并集:[e5, e8, e3, e1, e7, e0, e2, e4]
setElement1和setElement2的差集:[e5, e7]

6.测试,时间会相比较长

查询键是或不是存在exists crxy

 

 

美高梅开户网址 46

 

hash

Redis hash 是三个键值(key=>value)对聚集。

Redis
hash是叁个string类型的田野先生和value的映射表,hash尤其吻合用来存款和储蓄对象。

public static void testHash() {

    try {
        System.out.println("=======集合(Set)=======");
        jedis.select(5);
        jedis.flushDB();
        Map<String, String> map = new HashMap<String, String>();
        map.put("key001", "value001");
        map.put("key002", "value002");
        map.put("key003", "value003");
        jedis.hmset("hash", map);
        jedis.hset("hash", "key004", "value004");
        // return Map<String,String>
        System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
        // return Set<String>
        System.out.println("散列hash的所有键为:" + jedis.hkeys("hash"));
        // return List<String>
        System.out.println("散列hash的所有值为:" + jedis.hvals("hash"));
        System.out.println("将key006保存的值加上一个整数,如果key006不存在则添加key006:" + jedis.hincrBy("hash", "key006", 6));
        System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
        System.out.println("将key006保存的值加上一个整数,如果key006不存在则添加key006:" + jedis.hincrBy("hash", "key006", 3));
        System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
        System.out.println("删除一个或者多个键值对:" + jedis.hdel("hash", "key002"));
        System.out.println("散列hash的所有键值对为:" + jedis.hgetAll("hash"));
        System.out.println("散列hash中键值对的个数:" + jedis.hlen("hash"));
        System.out.println("判断hash中是否存在key002:" + jedis.hexists("hash", "key002"));
        System.out.println("判断hash中是否存在key003:" + jedis.hexists("hash", "key003"));
        System.out.println("获取hash中的值:" + jedis.hmget("hash", "key003"));
        System.out.println("获取hash中的值:" + jedis.hmget("hash", "key003", "key004"));

        System.out.println("");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

出口结果:

=======集合(Set)=======
散列hash的装有键值对为:{key004=value004, key003=value003,
key002=value002, key001=value001}
散列hash的全体键为:[key004, key003, key002, key001]
散列hash的全体值为:[value001, value003, value002, value004]
将key006保存的值加上多少个整数,假设key006不存在则添加key006:6
散列hash的有着键值对为:{key004=value004, key003=value003, key006=6,
key002=value002, key001=value001}
将key006保存的值加上1个整数,假若key006不设有则添加key006:9
散列hash的具备键值对为:{key004=value004, key003=value003, key006=9,
key002=value002, key001=value001}
除去一个恐怕五个键值对:1
散列hash的拥有键值对为:{key004=value004, key003=value003, key006=9,
key001=value001}
散列hash中键值对的个数:4
认清hash中是还是不是存在key002:false
判断hash中是或不是存在key003:true
获取hash中的值:[value003]
获取hash中的值:[value003, value004]

sudo make test

删除键

(integer(整数),再次回到值是2,说明成功删除3个)

 

美高梅开户网址 47

在外边执行key *操作

美高梅开户网址 48

 

在外界批量剔除知足有个别规则的键,反引号执行命令并获取再次来到值,也就是先进行redis-cli,进入后再实施删除

美高梅开户网址 49

 

将指令传给脚本执行

获取键的项目 美高梅开户网址 50

 

 

redis的help命令

“help @<group>” to get a list of
commands in <group>

 

“help <command>” for help on
<command>

 

“help <tab>” to get a list of
possible help topics

 

“quit” to exit

 

美高梅开户网址 51

 

 

列出的授命都以足以操作string类型的

美高梅开户网址 52

 

按tab补全命令(小技巧)

美高梅开户网址 53

 

 

稳步聚集

zset(sorted set:有序聚集)
Redis zset 和 set 一样也是string类型成分的集纳,且不允许再次的分子。
不等的是各个成分都会波及1个double类型的分数。redis正是通过分数来为会聚中的成员开展从小到大的排序。

zset的成员是唯一的,但分数(score)却得以另行。

public static void testSortSet() {

    try {
        System.out.println("=======有序集合=======");
        jedis.select(6);
        jedis.flushDB();
        Map<String, Double> map = new HashMap<String, Double>();
        map.put("key2", 1.2);
        map.put("key3", 4.0);
        map.put("key4", 5.0);
        map.put("key5", 0.2);
        System.out.println(jedis.zadd("zset", 3, "key1"));
        System.out.println(jedis.zadd("zset", map));
        System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));
        System.out.println("zset中的所有元素:" + jedis.zrangeWithScores("zset", 0, -1));
        System.out.println("zset中的所有元素:" + jedis.zrangeByScore("zset", 0, 100));
        System.out.println("zset中的所有元素:" + jedis.zrangeByScoreWithScores("zset", 0, 100));
        System.out.println("zset中key2的分值:" + jedis.zscore("zset", "key2"));
        System.out.println("zset中key2的排名:" + jedis.zrank("zset", "key2"));
        System.out.println("删除zset中的元素key3:" + jedis.zrem("zset", "key3"));
        System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));
        System.out.println("zset中元素的个数:" + jedis.zcard("zset"));
        System.out.println("zset中分值在1-4之间的元素的个数:" + jedis.zcount("zset", 1, 4));
        System.out.println("key2的分值加上5:" + jedis.zincrby("zset", 5, "key2"));
        System.out.println("key3的分值加上4:" + jedis.zincrby("zset", 4, "key3"));
        System.out.println("zset中的所有元素:" + jedis.zrange("zset", 0, -1));

        System.out.println("");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

输出结果:

=======有序集合=======
1
4
zset中的全部因素:[key5, key2, key1, key3, key4]
zset中的全数因素:[[[107, 101, 121, 53],0.2], [[107, 101, 121,
50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121,
51],4.0], [[107, 101, 121, 52],5.0]]
zset中的全数因素:[key5, key2, key1, key3, key4]
zset中的全体因素:[[[107, 101, 121, 53],0.2], [[107, 101, 121,
50],1.2], [[107, 101, 121, 49],3.0], [[107, 101, 121,
51],4.0], [[107, 101, 121, 52],5.0]]
zset中key2的分值:1.2
zset中key2的排名:1
剔除zset中的成分key3:1
zset中的全部因素:[key5, key2, key1, key4]
zset中元素的个数:4
zset中分值在1-4中间的要素的个数:2
key2的分值加上5:6.2
key3的分值加上4:4.0
zset中的全部因素:[key5, key1, key3, key4, key2]

7.安装,将redis的命令安装到usr/local/bin/目录中

5、redis数据类型之string

字符串类型是redis中最大旨的数据类型,它能储存任何格局的始末,包蕴二进制数据,甚至是一张图片(二进制内容)。1个字符串类型的值存款和储蓄的最大体量是1GB

命令

set/get(setnx)

mset/mget

incr/decr/incrby/decrby/incrbyfloat

append(string键,假若储存的是2.1,能够认为那是个字符串,它能够变换为integer也许float类型)

strlen(查看值的长短)

可到官网查阅

 

命令

set/get(setnx)

mset/mget(设置多个键值/查看四个键值)

美高梅开户网址 54

 

setnx会判断是还是不是处在(set直接赋值,不会判断值是或不是存在)

美高梅开户网址 55

 

 

incr(每趟递增添1,前提是值是数字类型,若不是则会报错)

美高梅开户网址 56

 

 

递减删除1(decr)

美高梅开户网址 57

 

老是递扩大几incrby

美高梅开户网址 58

 

可以是小数和负数

美高梅开户网址 59

 

拼接append,获取字符串长度(strlen)

美高梅开户网址 60

 

6代表字符串的长度

 

 

参考

http://www.runoob.com/redis/redis-tutorial.html
redisAPI简单利用
API整理原处-朱小斯

sudo make install

6、redis数据类型之hash

hash类型的值存款和储蓄了字段和字段值的映射,字段值只可以是字符串,不协助任何数据类型。hash类型的键至多能够储存2^32-叁个字段。

hash类型适合储存对象:如图:1-1和1-2

redis能够为任何键增减字段而不影响别的键

命令

hset/hget/hmset/hmget/hgetall(hsetnx)

hexists,判断键中的属性是不是存在

hincrby(hash类型没有hincr命令)

hdel

hkeys/hvals

hlen(获取键中富含多少个字段)

 

 

 

 

美高梅开户网址 61

key=value

(键=值)

 

美高梅开户网址 62

hset(储存)user:100(这是个有意义键名,用户:用户ID,方便将来查找),hget(查询)

美高梅开户网址 63

 

hmset(同时安装三天性情),hmget(同时询问多少个属性)Gender0、1性别是男或女

美高梅开户网址 64

hsetnx(假使有就创办,否则不成立)

美高梅开户网址 65

 

递增操作

hincrby

 

美高梅开户网址 66

(hdel)删除有些字段

hget(查询键值)

美高梅开户网址 67

 

美高梅开户网址 68

 

 

exists user:100(通用查询键是还是不是留存)

 

8.装置成功后,进入usr/local/bin/目录中查阅:

7、redis数据类型之list

list是三个静止的字符串列表,列表内部贯彻是行使双向链表(linked
list)达成的。

list还足以看做队列使用(后边讲)

3个列表类型的键最多能容纳2^32-一个成分。

命令

lpush/rpush/lpop/rpop

llen/lrange(-1表示最后贰个要素的职责,-2尾数12回之个成分)

lrem(lrem key count value)count分为二种意况

count > 0 : 从表头开端向表尾搜索,移除与 value 相等的因素,数量为
count 。

count < 0 : 从表尾起首向表头搜索,移除与 value 相等的要素,数量为
count 的相对值。

count = 0 : 移除表中持有与 value 相等的值。

lindex(查询钦定角标数据)

lset(修改钦点角标的因素)

ltrim(截取)

linsert before|after(向钦点成分前后插入成分)

rpoplpush:将成分从一个列表转到另二个列表

 

 

Lpush是左手插入,rpush是从列表左侧插入数据

美高梅开户网址 69

 

lpop(从列表左侧弹出元素,弹出后正是去除列表中的成分),rpop(从列表右边弹出成分)

美高梅开户网址 70

 

负数正是赢得最终贰个因素的角标(当不大概获知list里面有个别许个要素时,-1就是最终三个成分的角标)

美高梅开户网址 71

 

llen list是拿到列表成分的长短

 

美高梅开户网址 72

 

lrem list 2
a(正数,从列表的左边开始查找,将正数个因素删掉,负数正是从右边查找,删除相对值个元素)

美高梅开户网址 73

lrem list -1 a右侧

美高梅开户网址 74

lrem list 0 a(要是是0就会去除所有因素)

美高梅开户网址 75

 

lset修改钦赐角标的值

美高梅开户网址 76

ltrim截取

美高梅开户网址 77

插入

美高梅开户网址 78

美高梅开户网址 79

美高梅开户网址 80

 

美高梅开户网址 81

 

cd /usr/local/bin

⑧ 、redis数据类型之set

set集合中的成分都以不重复的,冬天的,三个集合类型键能够储存至多
2^23-1(long类型的最大值)个因素

set集合类型和list列表类型的相似之处,如图:2-1所示

命令

sadd/smembers/srem/sismember

sdiff/sinter(交集)/sunion(并集)

sdiffstore/sinterstore/sunionstore

scard(获取集合长度)/spop(随机从集合中取出并剔除叁个要素)

srandmember key [count]

假使 count 为正数,且小于集合基数,那么命令归来一个包括 count
个因素的数组,数组中的成分各分化。假若 count
大于等于集合基数,那么再次来到整个集合。

比方 count 为负数,那么命令归来贰个数组,数组中的成分或许会再次出现反复,而数组的长短为 count
的相对值。

 

美高梅开户网址 82

sadd set a(随机插入a成分到set名称的汇集)smembers
set(获取集合里面包车型大巴具备的要素,成分是无序的)

美高梅开户网址 83

Srem set a
b(删除集合里面包车型地铁有个别因素)(判断集合是或不是留存有个别成分,再次来到值1/0(存在/不存在))

美高梅开户网址 84

 

sdiff set
set1(求集合set有的成分而集合set1却不曾的要素,集合顺序交流改变求值也会沟通)

美高梅开户网址 85

 

sinter(求交集,集合顺序不影响)

美高梅开户网址 86

并集

美高梅开户网址 87

sunionstore aaa set set1 (将set和set1 并集储存在aaa)

美高梅开户网址 88

 

美高梅开户网址 89

 

美高梅开户网址 90

 

srandmember set1
2(从集合中随机重临1个要素,2是正数,再次来到值小于等于集合元素数量,元素值不另行)

 

美高梅开户网址 91

负数取的成分可能再一次

美高梅开户网址 92

 

美高梅开户网址 93

9.将安顿文件复制放到/etc/redis目录下:

sudo cp /usr/local/redis/redis.conf /etc/redis/redis.conf

只怕刚开首etc下没有redis目录,供给自个儿手动创造3个redis文件夹。

如上在第四步的时候大概会赶上那样的难点:

You need tcl 8.5 or newer in order to run the Redis testmake: *** [test] Error 1

消除办法:安装tcl

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz 
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ 
cd /usr/local/tcl8.6.1/unix/ 
sudo ./configure 
sudo make 
sudo make install

二、 配置redis:

陈设消息在/etc/redis/redis.conf下,打开sudo vi /etc/redis/redis.conf。

基本配置选项:

绑定ip:bind 127.0.0.1

端口号:port 6379

是或不是以守护进度运维:daemonize yes  必须改为yes

数据库文件:dbfilename dump.db  

数据库文件存款和储蓄路径:dir
/var/lib/redis  可改可不改,改的话提前创制好文件夹

日记文件:logfile
/var/log/redis/redis-server.log  必要求改,提前创造好文件夹

数据库,默认有16个:database 16

主从复制:slaveof

安排小结:重要更改两块:1,守护进度;2.日志文件路径

三、启动redis:

1.基于安顿文件运维redis服务器

sudo redis-server /etc/redis/redis.conf 

2.启动redis客户端:

redis-cli

3.输入ping命令测试:

127.0.0.1:6379> pingPONG

4.关闭redis服务器:

ps aux|grep redis # 查看redis进程号kill -9 pid redis进程号 # 关闭redis服务器

5.切换数据库:暗中认可有十五个,通过0-15来标识,私下认可是第③个数据库0号数据库。

select n

④ 、redis的多少操作:

1.redis的蕴藏格式为key-value格式。key是字符串类型,value的档次有5种:string、hash、list、set、zset。

2.redis中关于键的大规模的操作:

   2.1查看左右的键:keys *

   2.2翻看有些键是不是留存,存在重返1不存在重返0:exists key1

   2.3查看键的值对应的数据类型:type key1

   2.4剔除键值对:del key1 key2

   2.5设置键的超时时间,如若没有点名暗许向来存在:expire key seconds

   2.6查看键的有效性时间:ttl key1

   2.7清空数据库:flushall

3.string类型的基本操作:

3.1保存

set key value  保存单个键值对 mset key1 value1 key2
value2  保存多个键值对 setex key seconds value  设置键值和过期时间
append key value追加值

3.2获取

get key  获取单个 mget key1 key2  获取八个

3.3删除

del key

4 hash类型的基本操作:

4.1保存

hset key field value #设置单个属性

hmset key field1 value1 field2 value2 ... #设置多个属性

4.2获取

hkeys key # 获取指定键的所有属性
hget key field # 获取单个属性的值
hmget key field1 field2 ... # 获取多个属性的值
hvals key # 获取所有属性的值

4.3删除

del key # 删除整个hash的键和值
hdel key field1 field2 ... # 删除属性和属性对应的值

4.4有关hash类型的私房知道:

能够将hash类型精晓为用来囤积对象:

美高梅开户网址 94

5 list类型的基本操作:

5.1保存

lpush key value1 value2 ... #从左侧依次插入数据
rpush key value1 value2 ... #从右侧依次插入数据
linsert key before或after 现有元素 新元素 #从指定元素的前或后插入新元素

5.2获取

lrange key start stop 

start、stop为因素的下标索引,从左侧起首,第一个要素为0,-1标识最终七个成分。获取具有的成分:lrange
key 0 -1

5.3去除钦点成分

lrem key count value

美高梅开户网址,将列表中前count次出现的值为value的要素移除。

count > 0: 从头到尾移除

count < 0: 从尾到头移除

count = 0: 移除全部

6.set类别的基本操作

天性:严节集聚、成分唯一性不另行、没有改动操作

6.16日增成分

sadd key member1 member2 ...

6.2拿走成分

smembers key # 返回所有元素

6.3剔除钦命成分

srem key member1 member2 ...

7.zset类型的多寡操作

特点:有序聚集、成分唯一性不重复、没有改动操作、每一个成分都会提到一个double类型的权重,依据权重从小到大排列

7.1增加

zadd key score1 member1 score2 member2 ...

7.2获取

zrange key start stop  # 根据索引获取

zrangebyscore key min max  # 获取权重在min和max之间的数据
zscore key member  # 返回成员member的score值

7.3删除

zrem key member1 member2 ... # 删除指定元素
zremrangebyscore key min max #删除权重在指定范围的元素

⑤ 、redis与python进行互相:

1.在虚拟环境中设置redis包:

pip install redis

2.调用模块:

from redis import StrictRedis

3.创立对象:

sr = StrictRedis(host='localhost', port=6379, db=0)  # 默认就是这样的值,不写也行。

4.用sr这几个指标操作redis,将redis中的命令当作函数让sr调用就ok。

陆 、Django框架中session存储到redis中的配置

暗许情形下session是储存在数据库中的,不过当用session保存用户的情景时,用户频仍的造访服务器,会增大数据库的下压力,也会下降用户访问的快慢。为了化解这些标题将session存款和储蓄到redis中。

首先种配备格局:(不应用Django中session暗许的囤积形式,直接将session存储的地点布署到redis中)

# 1.在虚拟环境中安装包
pip install django-redis-sessions==0.5.6

# 2.在Django项目的settings文件中增加下面的配置
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

第二种配备格局:(先将Django中的缓存设置为redis,然后将session的积存地点设置为Django的缓存中)

#1.先在虚拟环境中安装包
pip install django_redis

#2. 设置redis作为django的缓存设置
CACHES = {
 "default": {
  "BACKEND": "django_redis.cache.RedisCache",
  # 把这里缓存你的redis服务器ip和port
  "LOCATION": "redis://172.16.179.142:6379/12",
  "OPTIONS": {
   "CLIENT_CLASS": "django_redis.client.DefaultClient",
  }
 }
}

# 3.设置redis存储django的session信息
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

以上那篇Django中redis的行使方法(包罗安装、配置、运行)便是笔者分享给我们的全体内容了,希望能给大家二个参考,也可望咱们多多协理脚本之家。

你或者感兴趣的作品:

  • NoSQL和Redis简介及Redis在Windows下的安装和选拔教程
  • Windows下Redis的设置使用图解
  • redis安装、配置、使用和redis
    php扩张安装教程
  • Redis的Python客户端redis-py安装使用验证文书档案
  • Windows下Redis的安装使用教程
  • python安装与利用redis的法门
  • python中redis的装置和平运动用
  • Windows下安装Redis及使用Python操作Redis的方法
  • C#
    Redis学习种类(一)Redis下载安装使用
  • linux安装配备及采用redis
  • Redis安装与应用格局小结

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图