Redis(2015.08.03笔记一)【分分快三计划】

作者:编程技术

六、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"

 

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

分分快三计划 1

make install

分分快三计划 2

 

拷贝配置文件

cp redis/redis.conf /etc/

分分快三计划 3

修改配置文件redis.conf

分分快三计划 4

daemonize yes(后台运行)

分分快三计划 5

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

分分快三计划 6

 

启动

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

分分快三计划 7

分分快三计划 8

分分快三计划 9

redis客户端(client,连接到本地的数据库)

四、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类型理解为用来存储对象:

分分快三计划 10

 

 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.1增加元素

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基础命令

获得符合规则的键名称

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

判断一个键是否存在

exists key

删除键

del key

del key1 key2

批量删除

redis-cli del `redis-cli keys "key*"`

获得键值的数据类型type

返回值可能是这五种类型(string,hash,list,set,zset)

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

 

 

 

五、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。

daemonize yes(后台运行)

一、安装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

 

 分分快三计划 11

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

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

 

 可能刚开始etc下没有redis目录,需要自己手动创建一个redis文件夹。

以上在第6步的时候可能会遇到这样的问题:

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数据类型之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 的绝对值。

 

分分快三计划 12

sadd set a(随机插入a元素到set名称的集合)smembers set(获取集合里面的所有的元素,元素是无序的)

分分快三计划 13

Srem set a b(删除集合里面的某些元素)(判断集合是否存在某个元素,返回值1/0(存在/不存在))

分分快三计划 14

 

sdiff set set1(求集合set有的元素而集合set1却没有的元素,集合顺序互换改变求值也会互换)

分分快三计划 15

 

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

分分快三计划 16

并集

分分快三计划 17

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

分分快三计划 18

 

分分快三计划 19

 

分分快三计划 20

 

srandmember set1 2(从集合中随机返回2个元素,2是正数,返回值小于等于集合元素数量,元素值不重复)

 

分分快三计划 21

负数取的元素可能重复

分分快三计划 22

 

三、启动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.切换数据库:默认有16个,通过0-15来标识,默认是第一个数据库0号数据库。

select n

 

删除键

(integer(整数),返回值是2,说明成功删除2个)

 

分分快三计划 23

在外面执行key *操作

分分快三计划 24

 

在外面批量删除满足某些条件的键,反引号执行命令并获取返回值,相当于先执行redis-cli,进入后再执行删除

分分快三计划 25

 

将命令传给脚本执行

获取键的类型 分分快三计划 26

 

 

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

 

分分快三计划 27

 

 

列出的命令都是可以操作string类型的

分分快三计划 28

 

按tab补全命令(小技巧)

分分快三计划 29

 

 

二、 配置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数据类型之string

字符串类型是redis中最基本的数据类型,它能存储任何形式的内容,包含二进制数据,甚至是一张图片(二进制内容)。一个字符串类型的值存储的最大容量是1GB

命令

set/get(setnx)

mset/mget

incr/decr/incrby/decrby/incrbyfloat

append(string键,假如储存的是2.1,可以认为这是个字符串,它可以转换为integer或者float类型)

strlen(查看值的长度)

可到官网查看

 

命令

set/get(setnx)

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

分分快三计划 30

 

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

分分快三计划 31

 

 

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

分分快三计划 32

 

 

递减删除1(decr)

分分快三计划 33

 

每次递增加几incrby

分分快三计划 34

 

可以是小数和负数

分分快三计划 35

 

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

分分快三计划 36

 

6表示字符串的长度

 

 

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

 

 

 

 

 

 

 

查进程ps –ef|grep redis

 

停止

分分快三计划 37

停止后需要重新启动才能进入

分分快三计划 38

 

 

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

分分快三计划 39

分分快三计划 40

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

分分快三计划 41

关闭

redis-cli shutdown

 

分分快三计划 42

 

 

 

 

 

其他路径都可以调用bin目录下的shell脚本,

分分快三计划 43

分分快三计划 44目录下面

分分快三计划 45

(启动)redis-server

分分快三计划 46

分分快三计划 47

 

 

 

 

一、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)

原子性(保证数据的准确性,原子操作,)

持久存储(两种方式RDB/快照,AOF/日志)

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

集群(3.0版本)

 

 

应用:应用在高并发和实时请求的场景。

新浪微博

hash:关注列表,粉丝列表

string:微博数,粉丝数(避免使用select count(*) from...)

sorted set:TopN,热门微博

 

分分快三计划 48

 

redis使用的是c语言实验的

 

首先安装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

分分快三计划 49

分分快三计划 50

 

分分快三计划 51

分分快三计划 52

 

分分快三计划 53

分分快三计划 54

 

 

分分快三计划 55

分分快三计划 56

 

 

 

分分快三计划 57

分分快三计划 58

 

分分快三计划 59

分分快三计划 60

 

分分快三计划 61

分分快三计划 62

 

分分快三计划 63

分分快三计划 64

 

 

keys *(查询所有的键,*是通配符)

分分快三计划 65

keys crxy*

 

key crxy?

分分快三计划 66

?(转义字符查询问号)

三、redis的特性【多数据库】

多数据库

每个数据库对外都是以一个从0开始的递增数字命名,不支持自定义的    

redis默认支持16个数据库,可以通过修改databases参数来修改这个默认值

redis默认选择的是0号数据库

SELECT 数字: 可以切换数据库

多个数据库之间并不是完全隔离的,flushall

 

 

 

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

 

分分快三计划 67

 

分分快三计划 68

数据库之间是相互隔离的

分分快三计划 69

清空所有的数据库(停掉这个命令)

分分快三计划 70

 

二、环境搭建

七、redis数据类型之list

list是一个有序的字符串列表,列表内部实现是使用双向链表(linked list)实现的。

list还可以作为队列使用(后面讲)

一个列表类型的键最多能容纳2^32-1个元素。

命令

lpush/rpush/lpop/rpop

llen/lrange(-1表示最后一个元素的位置,-2倒数第二个元素)

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是从列表右侧插入数据

分分快三计划 71

 

lpop(从列表左侧弹出元素,弹出后就是删除列表中的元素),rpop(从列表右侧弹出元素)

分分快三计划 72

 

负数就是获取最后一个元素的角标(当无法获知list里面有多少个元素时,-1当成最后一个元素的角标)

分分快三计划 73

 

llen list是获取列表元素的长度

 

分分快三计划 74

 

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

分分快三计划 75

lrem list -1 a右侧

分分快三计划 76

lrem list 0 a(如果是0就会删除所有元素)

分分快三计划 77

 

lset修改指定角标的值

分分快三计划 78

ltrim截取

分分快三计划 79

插入

分分快三计划 80

分分快三计划 81

分分快三计划 82

 

分分快三计划 83

 

六、redis数据类型之hash

hash类型的值存储了字段和字段值的映射,字段值只能是字符串,不支持其他数据类型。hash类型的键至多可以存储2^32-1个字段。

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

redis可以为任何键增减字段而不影响其他键

命令

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

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

hincrby(hash类型没有hincr命令)

hdel

hkeys/hvals

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

 

 

 

 

分分快三计划 84

key=value

(键=值)

 

分分快三计划 85

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

分分快三计划 86

 

hmset(同时设置多个属性),hmget(同时查询多个属性)Gender0、1性别是男或女

分分快三计划 87

hsetnx(如果有就创建,否则不创建)

分分快三计划 88

 

递增操作

hincrby

 

分分快三计划 89

(hdel)删除某个字段

hget(查询键值)

分分快三计划 90

 

分分快三计划 91

 

 

exists user:100(通用查询键是否存在)

 

查询键是否存在exists crxy

 

 

分分快三计划 92

 

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 Redis