Redis-REmote DIctionary Server
(使用ANSI C语言编写的开源数据库)
高性能的key-value数据库
内存数据库,支持数据持久化
官网 redis.io 中文redis.cn
A、Redis常用数据类型
string、hash、list(链表)、set、sorted set(有序集合)
B、编码方式
raw int ht zipmat linkedlist ziplist intset
C、安装redis
http://download.redis.io/releases/
下载2.8.0 http://download.redis.io/releases/redis-2.8.0.tar.gz
windows版本https://github.com/MicrosoftArchive/redis/releases
windows版本下载链接
https://github.com/MicrosoftArchive/redis/releases/
download/win-2.8.2402/Redis-x64-2.8.2402.zip
cd /usr/mylibs/
mkdir redis
wget http://download.redis.io/releases/redis-2.8.0.tar.gz
tar -xvf redis-2.8.0.tar.gz
cd redis-2.8.0
make
make test (测试)
You need tcl 8.5 or newerin order to run the Redis test
解决http://blog.csdn.net/luyee2010/article/details/18766911
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
D、服务端启动
redis-server
redis-server ${redis.conf}
redis-server --port ${port}
E、客户端启动与关闭
redis-cli
redis-cli -p ${port}
redis-cli -a ${password}
redis-cli -p ${port} -h ${ip} -a ${password}
关闭
redis-cli shutdown
redis-cli -p ${port} shutdown
redis-cli -h ${ip} shutdown
redis-cli -p ${port} -h ${ip} shutdown
F、Redis基础命令
info ping quit save dbsize select flushdb flushall
G、Redis键命令
set del exists expire ttl type randomkey
H、服务启动与连接测试
redis-cli 和redis-server执行文件位置: /usr/mylibs/redis/redis-2.8.0/src
cd src > ./redis-server & 回车 (后台启动)
关闭 kill -9 PID号
(查进程 ps -ef | grep redis)
(或者 ps aux )
重新开启一个窗口
./redis-cli
keys *
更多总结:
save 人为触发保存
直接终止进程 kill -9 PID (可能导致数据丢失,不推荐)
redis服务安全退出 ./redis-cli [-p 6379]shutdown
修改默认启动端口
6379 端口在redis.conf文件中,修改完成后启动时需要指定配置文件
(另:搜索文件位置 tree | grep conf)
启动./redis-server ../redis.conf
启用访问密码
同样在redis.conf,搜索 /requirepass ,(N 下一个 ?从下往上 / 从上往下)
启动./redis-server ../redis.conf
./redis-cli [-p 6379] -a root
注:设计到主从时,也需要配置密码 搜索 masterauth
redis.clients.jedis.exceptions.JedisConnectionException:
java.net.SocketTimeoutException: connect timed out
使用两个窗口打开redis服务器就能连接成功
相关问题进供备用参考
https://www.cnblogs.com/bestmystery/p/6371229.html
I、
基础命令
info 查看状态
select 1-15 选择数据库 (连接提示符上有数据库显示127.0.0.1:6379[10])
flushdb 清除当前database的数据
flushall 清除所有database的数据
dbsize 查看当前数据库的数据条数
monitor 监控
键命令实战
set test test
keys * (查看当前选择的数据库的所有的key)
del test
exists test
expire a 60 (设置a值有效时间为60秒,注意这里不是值,这里设置已存在key)
setex a 60 aa (这里是一步设置k-v和过期时间)
psetex a 10000 aa (这里的时间为毫秒,10000毫秒表示10s)
ttl test (查看当前key的剩余时间 -1表示没有过期时间 -2表示已过期,且值变成nil)
type a (返回当前值的类型)
hset hashkey key value
randomkey 随机返回当前数据库存在的key
rename a d (把key a重命名成key b,如果重命名成已经存在的key c,
那么c会被替换)
renamenx (nx结尾的命令会先判断,若已存在b,则重命名失败)
getrange a 0 2 (获取key a 的value的第0到第2位,前后都是闭区间)
J、数据结构-string
getset a aaa (先返回原来key的value,然后设置新的value)
mset a1 a1 b1 b1 c1 c1 (同时设置3组k-v)
mget a1 b1 c1 (同时获取多个key的value)
setnx a aa (先判断是否已存在key a,nx结尾都是先判断)
msetnx a aa b bb (具有事务原子性,要么全成功,要么全失败)
strlen a (获取key a的value的长度)
set e 1//incr e (设置int ,incr 表示++1),incrby e 100 (每次增量为100)
//decr 和 decrby同上,另外使用 ±数量 来实现递增或递减
append a xxx (在key a 的value上追加)
(更多见“键命令实战”)
K、数据结构-hash
hset map name jiang
hexists map name (判断map中是否有name的key)
hget map name
hset map age 28
hgetall map (获取所有的key 、value (非键值对形式))
hkeys map (获取所有key)
hvals map(获取所有的value)
hlen map (获取k-v个数)
hmget map name age (同时获取多个指定key的value)
hmset map newname newnamevalue newage newagevalue(同时设置多个k-v)
hdel map key1 key2 (同时删除多key)
hsetnx map name newjiang (set前先判断)
L、数据结构-list
lpush listobj 1 2 3 4 5 6
llen listobj (获取个数)
lrange listobj 0 20 (最新的数据在最上)
lset listobj 0 100 (设置索引0的元素的值为100)
lindex listobj 0 (根据索引取值)
lpop listobj (移除第一个)
rpop listobj(移除最后一个 )
M、数据结构-set(无序、可排重、时间复杂度O(1) )
sadd set a b c d
scard set (获取set集合元素的数量)
rename set set1
sadd set2 c d e f
smembers set1 (查看集合的成员)
sdiff set1 set2 (差集 set1减去set2,abcd - cdef = ab (保留前者独立存在的))
sdiff set2 set1(cdef-abcd=fe (保留前者独立存在的))
sinter set1 set2 (交集 =cd)
sunion set1 set2 (并集 = 所有值,但无重复)
srandmember set1 2(随机获取集合中的2个元素)
sismember set1 a (判断是不是集合中的元素)
srem set1 a b(移除集合中的a b两个元素)
spop set2 (随机移除一个元素并返回该元素(这个可用用于订单号获取))
N、数据结构-sortedset(有序集合,复杂度O(1))
zadd sortedset1 100 a 200 b 300 c (成员不可重复,但分数可重复)
type sortedset1 (=zset)
rename sortedset1 sortedset
zcard sortedset (查看集合中个数)
zscore sortedset a (查看a的分数 = 100)
zcount sortedset 0 201 (查看符合0到201前后闭区间的个数=2)
zrank sortedset a (获取索引(会先按值排序) =0)
zincrby sortedset 1000 a (给a添加1000)
zrank sortedset a (在上一步操作之后(会先按值排序) =3)
zrange sortedset 0 100 (= “b”,"c",“a”, 为什么有a?)
zrange sortedset 0 100 withscores(会分别携带相应的分数)