redis数据库操作


database 16:是数据库个数
选择数据库的命令select 1或0…
save 储存的机制,全部注释或全部开启
dbfilename 数据库储存储存的位置 默认/var/lib/redis


安装

低版本
#yum -y install epel-release
#yum -y install redis
#systemctl restart redis

5.0.0版本
编译安装
#wget http://download.redis.io/releases/redis-5.0.0.tar.gz
#tar -zxvf redis-5.0.0.tar.gz
#yum -y install gcc gcc-c++
#cd redis-5.0.0
#make
#cp src/redis-cli /usr/bin
#cp src/redis-server /usr/bin/
vim redis.conf
修改 daemonize no 为 daemonize yes 
# redis-server redis.conf
#redis-cli

redis-cli -p 6379 -h 127.0.0.1

添加:
set key value
如:
set username balabala
将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。
查看:get key
查看所有key:keys *

删除:
del key 如:del username

设置过期时间
expire key timeout(单位为秒)
也可以在设置值的时候,一同指定过期时间:
set key value EX timeout 或:setex key timeout value

查看过期时间
ttl key 如:ttl username

列表操作

在列表左边添加元素:
lpush key value  (lpush languages java php)
将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个	错误。

在列表右边添加元素:
rpush key value
将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。


查看列表中的元素:
lrange key start stop
返回列表key中指定区间内的元素,区间以偏移量start和stop指定,如果要左边的第一个到最后的一个lrange key 0 -1。

移除列表中的元素:(不是删除,是取出,取出的元素不会回到列表中)

移除并返回列表key的头元素:
lpop key


移除并返回列表的尾元素:
rpop key


指定返回第几个元素:(与取出不同,该元素还在)
lindex key index
将返回key这个列表中,索引为index的这个元素。

获取列表中的元素个数:
llen key 如:llen languages


删除指定的元素:
lrem key count value
如:
lrem languages 0 php
根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种:

count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。
count = 0:移除表中所有与value 相等的值。

set集合的操作:(与列表不同,重复的算一个)

添加元素:set就是key
sadd set value1 value2.... 如: sadd team xiaotuo datuo
查看元素:
smembers set  如:  smembers team
移除元素:
srem set member... 如:  srem team xiaotuo datuo
查看集合中的元素个数:
scard set  如:  scard team1
获取多个集合的交集:
sinter set1 set2  如:  sinter team1 team2
获取多个集合的并集:
sunion set1 set2  如:  sunion team1 team2
获取多个集合的差集:(以左边为参照,左边有右边没有的会显示)
sdiff set1 set2· 如:sdiff team1 team2  

hash,哈希操作:

添加一个新值:
hset key field value
如:hset website baidu baidu.com
将哈希表key中的域field的值设为value。
如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。

获取哈希中的field对应的值:
hget key field  如: hget website baidu

删除field中的某个field:
hdel key field  如:  hdel website baidu

获取某个哈希中所有的field和value:
hgetall key  如:  hgetall website

获取某个哈希中所有的field:
hkeys key  如:  hkeys website

获取某个哈希中所有的值:
hvals key 如: hvals website

判断哈希中是否存在某个field:1是存在 0不存在
hexists key field 如: hexists website baidu

获取哈希中总共的键值对数:
hlen field 如: hlen website

事物操作:Redis事务可以一次执行多个命令,事务具有以下特征:
隔离操作:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。
原子操作:事务中的命令要么全部被执行,要么全部都不执行。

开启一个事务:
multi
以后执行的所有命令,都在这个事务中执行的。

执行事务:
exec
会将在multi和exec中的操作一并提交。
取消事务:
discard (相当rollback 会将multi后的所有命令取消。)

监视一个或者多个key:
watch key...
监视一个(或多个)key,如果在事务执行之前这个(或这些) key被其他命令所改动,那么事务将被打断。
取消所有key的监视:
unwatch

发布/订阅操作:
发布订阅用在异步上

订阅某个频道的消息:
subscribe channel
>subscribe channel1 channel2 channel3
channel是一个通道,名称自定义

给某个频道发布消息:
publish channel message
>publish channel1 hello
;