redis 基本操作
进入redis
redis-cli
#不能进入,就安装:
sudo apt-get update
sudo apt-get install redis-server
exit #退出
Select 命令用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。
#默认使用 0 号数据库 默认开16个库
SELECT 1 # 使用 1 号数据库,Redis 现在的命令提示符多了个 [1]
redis五种数据类型、及操作
string
字符串list
列表hash
哈希set
集合sorted sets
有序集合
string
string 类型是 redis 最基本的类型, string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。
set key value
设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
set name 'juhao'
get key
- 返回key的值,若key不存在则返回nil
mset key value [key value..]
为多组key设置值,该操作为原子操作,要么一组都设置成功,要么一组都设置失败;
mset username 'root' password '123' name 'juhao'
mget key [key…]
返回一个或多个key的值,若key不存在返回nil,若key存在但不是字符串返回nil
mget username, password, name #有,号会被认为是key的一部分 mget username password name
append key value
将指定的值追加到key末尾,若key不存在,则创建并赋值,返回追加后的字符串长度
append name love
ttl key
- 返回key的剩余生存时间, -1 表示永久存在, -2表示不存在
set key value ex seconds
设置 key的同时,设置过期时间(单位:秒) key 过期后将不再可用,会被系统自动删除。
set age 18 ex 20 或 setex key seconds value 例: ( setex sex 20 '男' )
persist key
- 移除指定key的生存时间,成功返回1,若key不存在或不存在生存时间时返回0;
全局key操作
rename key newkey 改名
当key和newkey相同或者key不存在时返回一个错误,当newkey已存在时则会覆盖;
keys * # 查看所有的key del key # 删除 返回成功的个数 exists key # 查看key是否存在 返回存在个个数 type key # 查看key类型 expire key seconds #设置过期时间 persist key #移除过期时间 flushdb #删除当前数据库中的所有key flushall #删所有
list
列表的元素类型为string,
按照插入顺序排序
在列表的头部或者尾部添加元素
lpush key value[value…]
在头部插入数据
“`python
lpush key value #例 lpush my_list a b c d- 在尾部添加数据 - ```python rpush key value #例 rpush my_rlist a b c d
lindex key index
返回列表中元素的值。index从0开始,当index超出索引时返回null
lindex my_list 3 #查看第三个
lrange key start stop
查看索引范围内元素的值
lrange my_list 0 -1 #查看所有值
llen key
- 返回列表的长度
lset key index newvalue
指定索引号进行修改
lset my_list 0 'hello'
删除
lpop key 删除左边第一个
rpop my_list
rpop key 删除右边第一个
rpop my_list
lrem key count value
删除指定数量的value值
rpush test_list c a a b b c d e a d f m c #count > 0 从左往右 删除数量为count的value 例 : lrem test_list 2 a lrange test_list 0 -1 #count = 0 删除所有的 value 例 : lrem test_list 0 d, #count < 0 从右往左 删除数量为count的value 例 : lrem test_list -2 c
hash
是一个键值(key=>value)对集合。是string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
field 域
value 值
设置/修改
hset key field value
将field-value设置到hash表中,若key不存在会新建hash表再赋值,已存在则会覆盖;
hset user name juhao #user { name:juhao}
hmset key field1 value1[field value…]
同时设置多个
“`python
user {name:juhao , age:18}
hmset user name juhao age 18
“`
查看
hget key field
获取
value
hget user name
hmget key field[field…]
获取多个
value
hmget user name age
hvals key
- 获取全部
value
- 获取全部
hkeys key
- 获取所有的
field
- 获取所有的
hgetall key
- 获取全部
field
和value
- 获取全部
hlen key
- 查看有几个键值对
hexists key field
判断hash表中指定域是否存在,返回1,若key或field不存在则返回0;
hexists user name
删除
hdel key field
python
hdel user name
set
元素为string类型
无序集合
元素具有唯一性,不重复
sadd key member [member…] 增加元素
将一个或多个member元素加入到集合key中,若member已存在那么会忽略此元素,
sadd my_set m n b v c x z b
scard key
- 返回集合key中元素的个数;
smembers key
- 获取集合中所有元素
sismember key member 判断集合存在某个值
- 判断member在key中是否已存在, 返回0或1
sismember my_set b
删除
srem key member [member…]
移除一个或多个元素,不存在的member会被忽略,返回被移除元素个数
srem my_set a b n
spop key 随机删除
移除并返回集合中的一个随机元素,当key不存在时返回NULL
交集
# sinter key1 key2 .. 例 sinter my_set my_set2
把 key1 key2的交集合并到
newkey
# sinterstore newkey key1 key2 例 sinterstore new_set my_set my_set2
并集
# sunion key1 key2 ... 例 sunion my_set my_set2
把 key1 key2的并集合并到
newkey
# sunionstore newkey key1 key2 例 sunionstore new_set2 my_set my_set2
差集
# sdiff key1 key2 sdiff my_set my_set2
把 key1 key2的差集合并到
newkey
# sdiffstore newkey key1 key2 例 sdiffstore new_set3 my_set my_set2
zset
类似于Set,不同的是Sorted中的每个成员都分配了一个分数(Score)用于对其中的成员进行排序(升序)。
zset的成员是唯一的,但分数(score)却可以重复。
添加/修改
zadd key score member[ [score member] ..]
设置, 存在就更新
“`python
zadd my_zset 1 ‘one’
zadd my_zset 2 ‘tow’
zadd my_zset 10 one 20 two 30 three 40 four 50 ‘five’
“`
查看
zscore key member
查看score值
zscore my_zset two
zrange key start stop[withscores]
按索引返回key的成员, withscores表示显示score
zrange my_zset 0 -1 #显示全部
zrangebyscore key min max
返回集合中 score 在给定区间的元素
zrangebyscore zset 10 30
删除
zrem key member [member…]
移除有序集合中的一个或多个元素,若member不存在则忽略;
zrem my_zset two
zremrangebyrank min max :
- 删除集合中索引在给定区间的元素
zremrangebyrank my_zset 1 3
zremrangebyscore min max :
- 删除集合中 score 在给定区间的元素
zremrangebyscore my_zset 10 30
redis配置
vim /etc/redis/redis.conf #配置文件地址
port 6379 # 默认端口
logfile /var/log/redis.log # 日志文件位置
dbfilename dump.rdb # RDB持久化数据文件名 ,
dir /var/lib/redis #指定本地数据库存放目录
bind 0.0.0.0 # 指定IP进行监听
requirepass yourpassword #密码
save 900 1 #这三个是持久化,注释掉就关掉持久化
save 300 10
save 60 10000
启动/停止/重启命令
/etc/init.d/redis-server stop
/etc/init.d/redis-server start
/etc/init.d/redis-server restart
设置密码
config get requirepass //获取当前密码
#默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务
进入配置文件
vim /etc/redis/redis.conf
找到requirepass 设置密码
vim 查找 /requirepass 按n查找下一个
requirepass yourpassword //此处注意,行前不能有空格
重启redis
redis-cli shutdown
进入在添加 auth 123456
登陆的时候加上密码 redis-cli -a 123456