Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis与其他 key- value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
redis: 半持久化,存储于内存和硬盘
https://github.com/ServiceStack/redis-windows
https://github.com/MSOpenTech/redis/releases
455行 maxheap 1024000000 设置最大的数据堆的大小
387行 requirepass 123456 设置数据库的密码
cd C:\redis64-2.8.2101
C:\redis64-2.8.2101>redis-server.exe redis.windows.conf #执行 redis-server.exe 并加载Windows的配置文件
C:\redis64-2.8.2101—>dump.rdb 为数据文件
1、执行 brew install redis
2、启动 redis,可以使用后台服务启动 brew services start redis。或者直接启动:redis-server /usr/local/etc/redis.conf
关闭redis服务
brew services stop redis
C:\redis64-2.8.2101>redis-cli.exe
127.0.0.1:6379>auth ‘123456’
密码 为 字符串类型
https://redis.io/commands/
https://www.runoob.com/redis/redis-commands.html
config get databases 查看所有的数据库 数据库以0开始 一共16个
概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
一个key对应一个value
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
set key value
set name "zhangsan"
setex key seconds value
setex name 10 'zhangsan'
ttl key
ttl name
persist key
persist name
setnx key value
setnx name 'a'
mset key value [key value ……]
mset name 'zs' age 18
get key
get name
mget key [key ……]
mget name age
getrange key start end
getrange name 0 4
getset key value
getset name 'x'
incr key
incr age
decr key
decr age
incrby key intnum
incrby age 10
decrby key intnum
decrby age 10
strlen key
strlen age
keys *
exists key
exists name
type key
type name
del key [key ……]
expire key seconds
expire age 10
ttl key
persist key
flushdb 删除当前数据库中的所有
flushall 删除所有数据库中的key
rename key newkey
Move key db
move name 1 # 将name 移动到数据库1
{
name:“tom”,
age:18
}
Redis hash 是一个键值(key=>value)对集合。
hset key field value
redis> hset myhash name lucky
(integer) 1
redis> HGET myhash name
"Hello"
hmset key field value [field value ……]
hmset myhash a 1 b 2 c 3
hincrby key field incrment
hincrby hh age 10
hsetnx key field value
hsetnx hash sex man
hget hh name
hget key field
hget name field1
hmget key filed [filed ……]
hgetall key
hkeys key
hvals key
hlen key
hexists key field
hexists a x
hdel key field [field ……]
hdel a x y z
hstrlen key field
概述:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
lpush key value [vlaue ……]
lpush demo 2 3
Lpushx key val
lpushx list 'a'
rpush key value [vlaue ……]
rpush demo 2 1
rpushx key val
rpushx mm 'a'
lpop key
lpop demo
rpop key
rpop demo
lrange key start end
lrange demo 0 -1 #查看列表中的所有元素
注意:start end都是从0开始
注意:偏移量可以是负数
ltrim key start end
ltrim demo 1 -1 #将索引为1 到 -1的元素裁剪出来
注意:start end都是从0开始
注意:偏移量可以是负数
llen key
lindex key index
LINDEX mylist 0
概述:无序集合,元素类型为String类型,元素具有唯一性,不重复
{ ‘a’,‘b’}
sadd set 'a' 'b' 'c'
smembers key
smembers set
scard key
scard set
spop key
spop set
srandmember key count
srandmember set #返回一个随机元素
srandmember set 2 #返回2个随机元素
srem key member1 [memkber2]
srem set 'd' 'b'
sinter key [key ……]
sinter m l #求集合l和集合m的交集
sdiff key [key ……]
sdiff m l #求差集 注意比较顺序
sismember key member
sissmember m 'a' #集合m中是否存在元素'a'
zadd key score member [score member ……]
zadd zset 1 a 5 b 3 c 2 d 4 e
Zincrby key increment mcfaember
zincrby zset 10 'a' #给a的权重上加10
zrange key start end
zrange z1 0 -1
zcard key
zcard z1
zcount key min max
zscore key member
zscore l 'c' #s返回c的权重
ZRANGE key 0 -1 WITHSCORES
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT offset count]
区间及无限
min和max可以是-inf和+inf,这样一来,你就可以在不知道有序集的最低和最高score值的情况下,使用ZRANGEBYSCORE这类命令。
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZRANGEBYSCORE myzset -inf +inf
1) "one"
2) "two"
3) "three"
redis> ZRANGEBYSCORE myzset 1 2
1) "one"
2) "two"
当key存在,但是其不是有序集合类型,就返回一个错误。
ZREM key member [member …]
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZREM myzset "two"
(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "three"
4) "3"
redis>
默认在 数据库 0
select num 进行数据库的切换
select 1 #进入到数据库1
注意:当前密码修改后如果服务重启则需要重新设定
我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。
我们可以通过以下命令查看是否设置了密码验证:
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
你可以通过以下命令来修改该参数:
127.0.0.1:6379> CONFIG set requirepass "lucky"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "lucky"
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
AUTH 命令基本语法格式如下:
127.0.0.1:6379> AUTH password
127.0.0.1:6379> AUTH "lucky"
OK
127.0.0.1:6379> SET mykey "Test value"
OK
127.0.0.1:6379> GET mykey
"Test value"
Redis SAVE 命令用于创建当前数据库的备份。
redis Save 命令基本语法如下:
redis 127.0.0.1:6379> SAVE
redis 127.0.0.1:6379> SAVE
OK
该命令将在 redis 安装目录中创建dump.rdb文件。
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
redis 127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/redis/bin"
以上命令 CONFIG GET dir 输出的 redis 安装目录为 /usr/local/redis/bin。
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
127.0.0.1:6379> BGSAVE
Background saving started
pip install redis
导入
import redis
redis提供了2个方法
import redis
# decode_responses=True 自动解码
r = redis.Redis(host='127.0.0.1',port=6379,password='123456',db=0,decode_responses=True) #默认数据库为0
r = redis.StrictRedis(host='10.10.2.14',port=6379,password='123456',decode_responses=True)
管理对一个redis server的所有连接,避免每次建立,释放连接的开销。默认,每个redis实例都会维护一个自己的连接池,可以直接建立一个连接池,作为参数传给redis,这样可以实现多个redis实例共享一个连接池。
举例(连接池):
pool = redis.ConnectionPool(host='127.0.0.1',port=6379,db=0,password='123456',decode_responses=True)
r = redis.Redis(connection_pool=pool)